tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
2269
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Hallo Leute

    Ich versuche eine Abfrage auf 2 Tabellen zumachen.
    Ich will 2 unt Werte bekomme - einmal die, die nicht auf die Bed zutreffen und einmal die, die auf die Bed zutreffen.
    Glaube das man das mit LEFT JOIN und RIGHT JOIN machen kann...
    Hat jemand ein SELECT-Bespiel für mich?
     

  2. #2
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Ein Beispiel:

    Wenn ich diese Abfrage mache:
    SELECT * FROM tabelle1 WHERE datum > '2008-02-01 08:00:00'
    ->bekomme ich z.B. 13 Einträge.
    Diese 13 Einträge unterscheide ich durch einen Vergleich mit einer 2. Tabelle
    1.
    SELECT * FROM tabelle1
    WHERE datum > '2008-02-01 08:00:00' and typ IN
    (SELECT typ
    FROM tabelle2
    WHERE tabelle1.typ like tabelle2.typ
    and (wert like 'E' or wert like 'N'))
    GROUP BY typ;
    -> da bekomme ich 2 Werte raus
    nun will ich die restlichen 11 Werte bekommen, wenn ich es negativ setzte geht es nicht, hab es schon ausprobiert
     

  3. #3
    Avatar von shutdown
    shutdown shutdown ist offline Mitglied Smaragd
    Registriert seit
    Jun 2004
    Beiträge
    1.026
    Die logische Negierung müsste an folgender Stelle vorgenommen werden.
    Ob das inhaltlich so richtig ist, kann ich dir nicht sagen, weil ich von deinen Tabellen nix weiß.

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    SELECT * FROM tabelle1 
    WHERE datum > '2008-02-01 08:00:00' AND typ 
     
     
    NOT
     
     
    IN
    (SELECT typ 
    FROM tabelle2 
    WHERE tabelle1.typ LIKE tabelle2.typ 
    AND (wert LIKE 'E' OR wert LIKE 'N'))
    GROUP BY typ;
     
    Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!

  4. #4
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    HI
    Nein so geht es leider nicht, weil der typ ruhig gleich sein kann, sprich in Tabelle2 seien kann oder nicht. nur wenn er gleich ist darf der wert nicht e oder n sein. Aber es gibt ja auch noch die möglichkeit, dass der typ aus tabelle1 nicht in tabelle2 ist... versteht du wie ich das mein
     

  5. #5
    Avatar von shutdown
    shutdown shutdown ist offline Mitglied Smaragd
    Registriert seit
    Jun 2004
    Beiträge
    1.026
    1. Nein, ich verstehe nicht genau was du meinst - gib halt mal Beispiele was in den Tabellen steht.
    2. Soweit ich dich verstehe, macht dann deine Abfrage überhaupt keinen Sinn.
     
    Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!

  6. #6
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    in der Tabelle1 stehen verweise auf Dateien, die lokal in einer Ordnerstruktur liegen.
    Es gibt 2 Arten von Ordnern in denen die Dateien liegen.
    1. Art ist, wenn der typ aus tabelle1 und tabelle2 übereinstimmen und der wert in Tabelle2 e oder n ist.
    2. Art, wenn der typ aus Tabelle1 nicht in Tabelle2 steht oder, wenn der Typ aus Tabelle1 in Tabelle2 steht, der wert aber nicht e oder n ist.
    Ich hoffe jetzt ist es ein bisschen verständlicher
     

  7. #7
    Avatar von shutdown
    shutdown shutdown ist offline Mitglied Smaragd
    Registriert seit
    Jun 2004
    Beiträge
    1.026
    Nein ist es nicht wirklich.

    Was gibt es in Tabelle 1 für Spalten und wie sind diese belegt? (2 Beispiele reichen)
    Was gibt es in Tabelle 2 für Spalten und wie sind diese belegt? (2 Beispiele reichen)


    Ansonsten versuche ich jetzt mal deine verwirrende Beschreibung zu deuten - vielleicht funktionierts ja:

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    
    SELECT * FROM tabelle1 WHERE datum > '2008-02-01 08:00:00' AND (typ  
     NOT  IN(
          SELECT typ FROM tabelle2
    ) 
     
    OR (wert LIKE 'E' OR wert LIKE 'N')
    )

    Aber das ist geraten, da ich ja noch nicht mal weiß, aus welcher Tabelle denn überhaupt der Wert stammt! ! !
     
    Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!

  8. #8
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Also:

    Tabelle1--------------------Tabelle2
    Spalte typ:------------ Spalte typ ----------- Spalte wert
    A ---------------------- A------------------------ e
    B ---------------------- F------------------------ n
    C ---------------------- B ----------------------- e
    D ---------------------- D ----------------------- x

    (Striche sind nur Platzhalten)
    Ablauf
    Prüfung 1: Ist A von Tabelle1 in Tabelle2 ->ja
    Hat das A in Tabelle2 den wert e oder n-> ja
    (Ordnertyp 2)
    Prüfung 2: Ist B von Tabelle1 in Tabelle2 ->ja
    Hat B in Tabelle2 den wert e oder n -> ja
    (Ordnertyp 2)
    Prüfung 3: Ist C von Tabelle1 in Tabelle2 ->nein
    (Ordnertyp 1)
    Prüfung 4: Ist D von Tabelle1 in Tabelle2 -> ja
    Hat D von Tabelle2 den wert e oder n -> nein
    (Ordertyp 1)

    Vllt ist es ja jetzt verständlich.
    Geändert von Saskia21 (14.03.08 um 14:27 Uhr)
     

  9. #9
    Avatar von shutdown
    shutdown shutdown ist offline Mitglied Smaragd
    Registriert seit
    Jun 2004
    Beiträge
    1.026
    Weiß zwar nicht, welchen Sinn diese Variante haben soll, aber:

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    SELECT * FROM tabelle1 WHERE datum > '2008-02-01 08:00:00' 
     
    AND (
     
    typ NOT IN (
       SELECT typ FROM tabelle2
    )
     
    OR
     
    typ NOT IN (
       SELECT typ FROM tabelle2 WHERE wert IN ('E', 'N')
    )
     
    )
     
    Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 11.10.10, 15:19
  2. MySQL: Join von 3 Tabellen
    Von DeMoehn_sm im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.03.09, 07:08
  3. Abfrage über 2 Tabellen mit Join der Daten
    Von matzseesi im Forum Relationale Datenbanksysteme
    Antworten: 10
    Letzter Beitrag: 24.04.08, 09:27
  4. MySQL - Join mit 2 Tabellen
    Von LosLegator im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 11.08.07, 19:49
  5. [mySQL] JOIN über drei Tabellen
    Von nahkampfschaf im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 12.05.04, 12:59