2017-04-10 3 views
1

in meinem Programm Ich habe zwei Abfragen (das Ergebnis ist eine Spitze zu schaffen), die erste Abfrage wird die Spitzenposition und die in dieser Position ist, zum Beispiel das erste Ergebnis Position etwas sein würde:Wie kann ich zwischen zwei Tabellen bestellen?

POSITION: 1 ID: 203 

Wo POSITION ist die Position und ID ist die Benutzer-ID, dann, um den Benutzernamen zu erhalten und nicht die ID anzuzeigen, ich eine andere Abfrage, wo ich alle Top-IDs eingeben und die Abfrage gibt mir die Benutzernamen zurück.

Das Problem ist, dass ich bei der ersten Abfrage in der Lage bin, die höchste Reihenfolge zu erhalten, aber wenn ich die IDs in der zweiten Abfrage eingeben, ist die zurückgegebene Information in einer bizarren Reihenfolge und ich kann nicht wissen, welcher Benutzername geht in welcher Position von oben.

PS: Die zweite abgefragte Tabelle enthält zwei Spalten (ID und USERNAME) und die erste Tabelle enthält auch zwei Spalten (POSITION und ID).

+0

Es ist besser, Anbieter Probentabellendaten und erwartete ouput –

Antwort

2

Wenn Sie alle Daten zurückgeben möchten, erste Tabelle nicht haben Materie 2. Tabelle enthalten oder nicht dann können Sie linke äußere verwenden beitreten und die Abfrage sollte

SELECT f1.id as user_id, f1.position, s1.username 
FROM first_table AS f1 
LEFT JOIN second_table AS s1 
ON f1.id = s1.id 
ORDER BY f1.position asc 

sein, aber Sie wollen nur die Daten sehen dass beide Tisch haben, dann können Sie innere Verknüpfung verwenden dann sollten Abfrage wie sein unter

SELECT f1.id as user_id, f1.position, s1.username 
FROM first_table AS f1 
inner JOIN second_table AS s1 
ON f1.id = s1.id 
ORDER BY f1.position asc 
+0

Vielen Dank, arbeitete wie ein Charme! –

0

JOIN Abfrage

Select B.username from table1 A Join table2 B on A.Id = b.id order by A.POSITIONID asc limit 1 
0
SELECT ft.user_id, ft.position, st.username 
FROM first_table AS ft 
LEFT JOIN second_table AS st 
ON ft.user_id = st.user_id 
ORDER BY ft.user_id 

Wo first_table ist der Name der Tabelle mit der Position und der ID und second_table ist der Name der Tabelle mit der ID und Benutzernamen ein.

Mit dieser Abfrage erhalten Sie alle gewünschten Daten (ID, Position und Benutzername) mit einer einzigen Abfrage an die DB.

Verwandte Themen