2016-07-25 2 views
0

Wenn ich wählen Sie die Werte von zwei TabellenWie kann ich den letzten ID-Wert abrufen, bevor ich eine Spalte in mysql "zähle"?

SELECT 
    tab.id 
    ,tab.name 
    ,tab2.id 
    ,tab2.name 
    ,count(distinct tab3.id) as totalusers 
FROM master tab 
    LEFT JOIN user as tab2 ON tab.id = tab2.cod 
    LEFT JOIN user as tab3 ON tab.id = tab3.cod 
WHERE tab.id = 5 limit 1 
ORDER BY tab2.id DESC 

ODER

SELECT 
    tab.id 
    ,tab.name 
    ,tab2.id 
    ,tab2.name 
    ,count(tab2.id) 
FROM master tab 
    LEFT JOIN user as tab2 ON tab.id = tab2.cod 
WHERE tab.id = 5 limit 1 
ORDER BY tab2.id DESC 

i

bekam
+ ------ + -------- + ------- + --------- + ------------------ + 
| tab.id | tab.name | tab2.id | tab2.name | count(tab3.id)  | 
+ ------ + -------- + ------- + --------- + ------------------ + 
| 5  | home1 | 132  | joao  | 3     | 
+ ------ + -------- + ------- + --------- + ------------------ + 

Aber die tab2.id den ersten Wert der Tabelle abrufen, die Reihenfolge funktioniert nicht, wenn ich den Wert zähle, wie bekomme ich den letzten Schlüssel und sein Name?

Benutzer

+ ---- + ----- + --- + 
| id | name | cod | 
+ ---- + ----- + --- + 
| 132 | joao | 5 | 
+ ---- + ----- + --- + 
| 133 | well | 5 | 
+ ---- + ----- + --- + 
| 134 | cindy | 5 | 
+ ---- + ----- + --- + 

Obs .: der MAX() hilft (Return last id and count of id), aber ich brauche den Namen von den Benutzern auch, kann ich es auf machen, wo ohne Unterabfrage verbinden und mit einer Linie (Grenze 1) ?

Antwort

1

scheinen Sie brauchen innere Verknüpfung und Gruppe von

select tab.id, tab,name, t2.id, t2.name, count(*) 
from tab 
inner join 
(select id, name, code from 
user where id = (select max(id) from user)) t on t.cod = tab.code 
inner join user as uset.code = tab.code 
group by tab.id, tab,name, t2.id, t2.name 
+0

Dank, es funktioniert! – israel

+0

@ Israel gut .. wenn meine Antwort richtig ist, bitte markieren Sie es als akzeptiert .. – scaisEdge

Verwandte Themen