Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wenn Sie Daten aus zwei Tabellen in MySQL abrufen, würde Join hier nicht funktionieren

Wenn ich das richtig verstanden habe, sollte dies das tun, was Sie brauchen:

$result = mysql_query("SELECT (specName, (IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))) FROM specialities s;");
while (list($spec, $checked) = mysql_fetch_array($result)) {
    // Do your outputting here.
}

Bearbeiten

Auf Ihre Bitte hin werde ich fortfahren und die Abfrage erläutern. Der Teil, der Sie wahrscheinlich verwirrt, ist diese Unterabfrage:

(IF EXISTS (SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1))

Der IF EXISTS weist MySQL an, entweder TRUE oder FALSE zurückzugeben, wenn der unmittelbar darauf folgende Teil 'existiert' (ein Ergebnis enthält). Der SELECT * FROM user_specialty us WHERE s.id = us.sid AND us.uid = '$id' LIMIT 1 weist MySQL einfach an, eine Zeile in user_specialty zu finden wobei s.id = us.sid (die Fachgebiets-ID stimmt überein) und us.uid = '$id' (die ID ist die des Benutzers).