PHP MYSQL-Join-Abfrage. WÄHLEN Sie, WO UND IN ODER Logik Fehler

Hey alle. Ich glaube, ich habe einen Logik Fehler in meinem qry. Die Ausgabe ist korrekt, aber in Dreiergruppen. Ich habe gestarrt, auf diese für eine lange Zeit und nicht, es zu sehen. Kann jemand etwas Licht in diese Schuppen? Danke!!

Wollte auch noch hinzufügen, diese info als gut.

  • $userid = 1
  • $UserIDAList = (1,1,6)
  • $UserIDBList = (2,3,1)

PHP-Code:

$result  = mysql_query("SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName FROM TBL_ContactsList, TBL_ContactName WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid)) AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf ("ID: %s  Name: %s", $row[0], $row[1]);
    echo "<br/>";
}

Nur die SQL-Abfrage (Lesbarkeit):

SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName 
FROM TBL_ContactsList, TBL_ContactName 
WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid)) 
AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))

Ausgabe:

ID: 2 Name: Joe
ID: 3 Name: Joe
ID: 4 Name: Joe
ID: 2 Name: Jimbo
ID: 3 Name: Jimbo
ID: 4 Name: Jimbo
ID: 2 Name: Mike
ID: 3 Name: Mike

EDIT: Hier ist was ich landete mit. (kann nicht herausfinden, Einzug auf hier.)

Aber jetzt bin ich fehlt ein Eintrag aus der db.

$result = mysql_query("
SELECT cl.ContactID, cn.FirstName
FROM TBL_ContactName AS cn
INNER JOIN TBL_ContactsList AS cl
ON cl.ContactID = cn.NameID
WHERE
cn.NameID != $userid
AND (
cn.NameID IN ($UserIDBList) OR cn.NameID IN ($UserIDAList)
)
");

Die Ausgabe sieht wie folgt aus.

ID: 2 Name: Joe

ID: 3 Name: Jimbo'

Aber wenn ich LEFT JOIN bekomme ich diese. In der Nähe, aber immer noch fehlenden ID.

ID: 2 Name: Joe

ID: 3 Name: Jimbo

ID: Name: Mike

Irgendwelche Ideen?? Danke!

  • Statt FROM TBL_ContactsList, TBL_ContactName sollten Sie versuchen, ein LINKS-oder RIGHT join, je nach Ihrer Tabelle struct
  • hey johnp, du hast Recht. aus allen Kommentaren, war es die VERKNÜPFUNG AUF, dass ich fehlte. danke!
  • Vielen Dank an alle! Ich ging mit @Arda und @dnl Antworten. Aber jetzt fehlt mir ein Eintrag in die Abfrage ein. Nach einigen versuchen, mit LEFT JOIN hat es fast, außer es fehlt die ID. Ich bearbeitet die Frage, über die mit dem code so weit und die Ausgabe.
  • Einzug ist nicht schwer. Drücken Sie die Leertaste.
  • ok, dachte ich, mein problem. Am Ende hatte ich zwei qrys, eine für UserIDA und UserIDB. Aber alle Hilfe im JOINs machen es möglich. Danke!
InformationsquelleAutor Newphper | 2011-03-03
Schreibe einen Kommentar