ich hab leider noch nichts passendes per Google gefunden, wahrscheinlich suche ich einfach mit den falschen Schlagwörtern.
Erstmal zum Problem:
Ich frage in der einen Datenbank Nummern (IDs) nach einem bestimmten Kriterium ab. In einer anderen Tabelle der selben Datenbank stehen dann die passenden Beschreibungen zu den IDs.
Jetzt will ich, dass zusätzlich zu den ausgegebenen Zahlen (IDs) auch die passende Beschreibung ausgeben wird.
Wie könnte ihr mir helfen:
Entweder nennt ihr mir das passende Schlagwort, damit ich Google nochmals durchforsten kann oder aber durch eine kurze Erklärung.
Schlagwörter würden mir sicherlich auch schon reichen
Besten Dank im Voraus!
//EDIT
Ich denke mit InnerJoin und Theta müsste eigentlich genau das gemeint sein, wonach ich suche, oder?
Also ich habe da jetzt einige Seiten gefunden und eigentlich musste das jetzt auch funktionieren, aber es zeigt leider keine Ergebnisse (man sieht nichts).
Ich habe den Code aus einem anderen Thread mal etwas verändert.
Warum klappt das mit dem LEFT JOIN nicht?
Hier der Code:
[PHP]
Vorbereitete Anweisung: SELECT
<?php
require_once "db_daten.php";
$suche = "%1%";
if($stmt = $mysqli->prepare(
"SELECT
gm.group_ID,
gm.user_ID,
gm.status,
ac.surname
FROM
groupmembers gm
account ac
LEFT JOIN
groupmembers gm ON gm.user_ID = ac.userid
WHERE
gm.group_ID LIKE ?
")) {
$stmt->bind_param("s", $suche);
$stmt->execute();
$stmt->bind_result($group_ID, $user_ID, $surname, $status);
echo "\n";
while($stmt->fetch()) {
echo "\n\t\n\t\n\t\n\t\n\n";
}
$stmt->close();
}
$mysqli->close();
?>
"
. htmlspecialchars($group_ID)
. "
"
. htmlspecialchars($user_ID)
. "
"
. htmlspecialchars($surname)
. "
"
. htmlspecialchars($status)
. "
[/PHP]
Ohne den den Left Join und der Ausgabe des Nachnamens zeigt es Ergebnisse der Tabelle groupmembers an.
Edit: Obwohl, joinst du absichtlich 2x? Verstehe zumindest nicht ganz was das werden soll.
Am besten du schreibst die SQL Abfrage in phpMyAdmin oder was immer du auch verwendest. Wenn Sie fertig ist und richtig funktioniert, überträgst du sie erst in den PHP Code.
SELECT
gm.group_ID,
gm.user_ID,
gm.status,
ac.surname
FROM
groupmembers gm
account ac
LEFT JOIN
gm.user_ID = ac.userid
WHERE
gm.group_ID LIKE ?
"
So sieht der Code jetzt aus, es funktioniert immer noch nicht.
Eigentlich soll der nur in einer Tabelle alle Einträge untereinander auflisten, die die Gruppen-ID 1 haben.
Du hast ja noch immer die gleichen Fehler (2x groupmembers!) drin…
Außerdem solltest du eine Fehlermeldung „You have an error in your SQL syntax…“ bekommen.
Wie gesagt, nur SQL ist momentan wichtig, nicht PHP.
Hier - ausnahmsweise - eine saubere, reine SQL Abfrage:
SELECT
gm.group_ID,
gm.user_ID,
gm.status,
ac.surname
FROM
groupmembers AS gm
LEFT JOIN
account AS ac ON (gm.user_ID = ac.userid)
WHERE
gm.group_ID = 1
Führst du das auch wie beschrieben in phpMyAdmin aus?! Da bekommst du garantiert eine Fehlermeldung.
Jetzt funktioniert es einwandfrei.
Aber ich hatte doch nur die „account“-Tabelle 2x drin oder sehe ich schlecht.
Prinzipiell waren die gravierendsten Fehler das fehlende „ON“ nach dem Left Join.
Und vielen Dank für die Ausnahme, mir einen reinen SQL-Code zu erstellen Ich weis das wirklich zu schätzen und bin jedes mal aufs Neue über die erstaunlich schnelle und erfolg-bringende Hilfe dieses Forums erstaunt!
Ah okay, jetzt hab ich es endlich verstanden.
Leider wird es nicht in jedem Buch richtig verständlich erklärt.
Die erklären zwar immer den Quelltext, aber meist nicht die Logik, die dahinter steht. Und dann entstehen solche Fehler.
Aber das hat mich jetzt schon ein ganzes Stück weiter gebracht