[SQL] Tabellen-join und "if not exist"?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von hacker5, 19. April 2010 .

  1. 19. April 2010
    Tabellen-join und "if not exist"?

    Leute ich hab gerade eine Denkblokade. Der Titel ist was doof, aber schwer zu erklären im Titel.

    Mal kurz zum Aufbau meiner Datenbank

    Spoiler
    Spalte 1:

    id|userid
    11|5

    Spalte 2:
    id|eid|userid
    1|11|6
    2|11|7
    3|11|8

    Ich hätte jetzt gerne die id von Spalte 1 wenn in Spalte2 kein Eintrag mit der Userid 6 und eid 11 ist. (Für Userid 6 können wir $uid nehmen ist also in einer Variablen belegt)

    Das ganze wird in einem NOT IN() ausgeführt. Also kann ich nur mit dem Select-Statement arbeiten. Hat jemand mal gerade ein Lösungsansatz oder geht das gar nicht was ich vor hab?^^


    So sah mein Versuch aus:
    PHP:
    SELECT 
    s1
    . id FROM spalte1 s1
    JOIN spalte2 s2 ON s1
    . id = s2 . eid
    WHERE 
    ???
    Wie mache ich weiter? Wenn ich jetzt mit s2.userid!=6 arbeite bekomm ich logischerweise die Ausgabe:
    2|11|7
    3|11|8

    Aber ich will nur eine Ausgabe wenn id 6 in spalte 2 existiert dann sag mir die s1.id
    Wenn id 6 nicht existiert gib einfach nichts aus.
    Danke im Vorraus



    Edit://

    Okay ich bin weiter und habs jetzt glaub ich

    PHP:
    ....  WHERE NOT IN  ( SELECT 
    s1
    . id FROM spalte1 s1
    JOIN spalte2 s2 ON s1
    . id = s2 . eid
    WHERE 
    not exists 
    ( select uid from spalte2 Where uid '6'  &&  eid = g . eid ))
    // g = ausserhalb dem NOT IN
     
  2. 19. April 2010
    AW: Tabellen-join und "if not exist"?

    schau dir mal den left join bzw right join an.

    bei einem left join werden alle einträge aus der linken tabelle genomme, auch wenn über den join befehl keine referenz gefunden wurde. theoretisch kannst du nun mit where auf null abfragen.

    vs

    bzw. kommst du damit nicht auch zum ziel:

    Code:
    SELECT DISTINCT
    s1.id FROM spalte1 s1
    JOIN spalte2 s2 ON s1.id=s2.eid 
    WHERE s2.userid != 6
    
     
  3. 20. April 2010
    AW: Tabellen-join und "if not exist"?

    Hey danke schonmal.

    Nur wenn ich mit DISTINCT arbeite und die uid!=6 dann gibt er mir trotzdem die id 11 aus weil ja noch zwei andere Einträge in der Datenbank sind oder aber ich hab was falsch gemacht ^^
     
  4. 20. April 2010
    AW: Tabellen-join und "if not exist"?

    nein

    dann glaub ich verstehe ich die aufgabe doch nicht ganz
     
  5. 20. April 2010
    AW: Tabellen-join und "if not exist"?

    Also bei mir wird mit der qry (tsql) auf die zwei angegebenen Tabellen (wie wollknoll)

    Code:
    SELECT S0.ID
    FROM Spalte1 S0
    INNER JOIN Spalte2 S1 ON S0.ID = S1.EID
    WHERE S1.USERID <> '6'
    
    folgendes ausgegeben:

    Code:
    |ID|
    |11|
    |11|
    
    Was die Fragestellung angeht, passt also der DISTINCT...
    (der join findet von drei passenden EIDs zwei, wo userid nicht 6 ist)

    Wahrscheinlich ist die Frage ne andere (?)
    bzw das "NOT IN () von vorher" ist nicht klar

    gr33tz
    mdaboss

    EDIT
    das widerspricht sich:
    und
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.