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.)