_King Lully: Komplizierte SQL-Abfrage (JOIN & ORDER BY)

Beitrag lesen

Ich habe folgendes Problem:
In einer Tabelle habe ich Namen gespeichert (Tabelle1) und jeder Name wird genau zu einer Stadt zugeordnet. In einer zweiten Tabelle habe ich einträge, wie oft jemand für eine Stadt gevotet wurde (Tabelle2). Nun möchte ich aus Tabelle1 die ersten 10 Namen abholen welche für eine Stadt am meisten gevoted wurden. (Ist kaum verständlich oder?)

Kennst Du die Regel Nummer eins?   ;)
Wichtig ist immer die sinnvolle Benamung. Was soll 'Tabelle1' und 'Tabelle2'?

Hast Du eine Tabelle 'Cities' und eine Tabelle 'Votings', wobei jede Stadt n-fach gevotet werden kann?

Falls ja mal sowas versuchen:

SELECT * FROM tabelle1
JOIN tabelle2 ON (tabelle2.user = tabelle1.id)
WHERE tabelle1.stadt = 'Velbert'
ORDER BY tabelle2.COUNT(*)
LIMIT 10

  
SELECT  
 id,  
 count(*) as ID_Count  
FROM  
 tabelle1                                   -- Hüstel  
JOIN  
 tabelle2                                   -- Hüstel  
ON  
 (tabelle2.user = tabelle1.id)              -- Hüstel  
GROUP BY  
 id  
ORDER BY  
 ID_Count DESC  
LIMIT  
 0, 10  

Keine Garantie auf den Code, bitte ggf. prüfen.

Also kein "WHERE tabelle1.stadt = 'Velbert'" sondern stattdessen eine Gruppierung. (Hoffe mal, dass der JOIN OK war.)