2016-11-21 1 views
0

Ich habe 2 Tabellen in MySQL-Datenbank: Konten und Benutzer2 SELECT in 1 Abfrage-Ergebnisse in 4 ergibt sich, wenn zwei Ergebnisse zu erwarten

Accounts wie folgt aussieht: enter image description here

Benutzer sieht wie folgt aus: enter image description here

ich möchte aus beiden Tabellen accountid und Benutzer-ID wählen und Ergebnisse erzielen wie so:

accountid || userid 
7   22 
29   44  

ich verstehe nicht, warum es geben s me 4 Ergebnisse wie folgt:

enter image description here

+0

Nun, wir wissen nicht, über den gleichen Namen. Ohne ON-Bedingung wird jede Zeile in Tabelle1 mit jeder Zeile in Tabelle2 verknüpft. – Seb

+0

Sie haben Recht! Ich vermischte mich mit "NATURAL" beitreten .. Ich werde es löschen, um Fehler für andere zu vermeiden – Delphine

+0

bieten Sie Ihre DB-Schema, und Bedingung, warum 'accountID = 7' ist mit' userid = 22' verknüpft, aber nicht 44? – Alex

Antwort

1

nach Ihren Screenshots haben Sie von username verknüpften Tabellen, die sehr schlecht db Design.

Sie sollten also Ihr Schema definitiv ändern und user.id verwenden, um Ihre Tabellen zu verknüpfen.

Aber bisher Ihre Frage ist:

SELECT accounts.accountid, users.userid 
FROM accounts 
LEFT JOIN users 
ON accounts.username=users.username 
+0

Diese Syntax tut, was ich brauche, und ich habe berücksichtigt, was Sie über FK erwähnt haben. Vielen Dank –

0

Wir nicht genau über unsere Tabellenstruktur kennen, aber Sie sind auf jeden Fall die ON-Teil fehlt auf der

SELECT accounts.accountid verbinden, users.userid FROM Konten INNER JOIN Benutzer ON users.userid = accounts.userid

oder was auch immer Sie

0

vergleichen wollen glaube ich Ihnen fehlt das 'ON' Teil der Syntax, geben diesem einen Versuch:

SELECT accounts.accountid, users.userid 
FROM accounts 
INNER JOIN users 
ON accounts.userid=users.userid; 

Vergewissern Sie sich in Ihrem ‚Konten‘ Tisch ‚Benutzer-ID‘ haben für diese zu arbeiten, das sagt die Abfrage der ‚Benutzer-ID‘ in beiden Tabellen zu verbinden und sollte verhindern Sie doppelte Zeilen.

Ich hoffe, das hilft!

0

Ich weiß nicht, warum Sie nicht die Antwort bekommen, aber Sie sollten den einen Punkt wissen, dass Sie Benutzernamen in beiden Tabellen gemeinsam haben, also wenn Sie die Tabelle mit Hilfe von Benutzernamen der Tabelle kommen Sie definitiv Ergebnis erhalten

select accountid,userid from Accounts inner join Users where Accounts.username=Users.username; 
Verwandte Themen