2016-08-06 7 views
0

Ich habe eine user Tabelle mit Benutzernamen und eine message Tabelle mit from_id und to_id. Wie kann ich von Benutzername und zu Benutzername mit nur einer einzigen Abfrage erhalten?Wie kann ich zwei verschiedene Werte aus einer anderen Tabelle mit nur einer Abfrage auswählen?

Ich habe die unten Abfrage verwendet, aber etwas falsch ist:

select id,name 
from user 
where 'id' not in (select 'from_id' from message) and 
     'id' not in (select 'to_ID' from message); 

user Tisch

user table

message Tisch

message table

Antwort

0

dieses Versuchen Sie:

SELECT m.id 'message_id', 
     `u1`.`name` `from_name`, 
     `u2`.`name` `to_name` 
FROM `message` `m` 
JOIN `user` `u1` ON `m`.`from_id` = `u1`.`id` 
JOIN `user` `u2` ON `m`.`to_id` = `u2`.`id` 
+0

Funktioniert das? Um besser auszusehen, klicken Sie auf Bearbeiten, wählen Sie alle aus und drücken Sie Strg + K. Speichern Sie dann die Änderungen – jophab

+0

Sollte "message_id" nicht in Backticks sein? –

0

Benutzernamen und ID des Benutzers select id, name from user u, message m where u.id=m.from_ID and u.id=m.to_ID

+0

MySQL ein leeres Ergebnis zurückgegeben (d Null Zeilen). funktioniert nicht –

0
SELECT from.name as FromUser, to.name AS ToUser 
FROM user AS from, user AS to, (SELECT * FROM message where id=somevalue) AS m 
WHERE from.emp_id = m.from_id AND to.emp_id=m.to_id;