Użyj wyników z jednego zapytania sql w innym poleceniu where (subquery?)
Widzę wiele podobnych pytań, ale albo są tak złożone, że nie mogę ich zrozumieć, albo nie wydają się zadawać tego samego.
To proste: mam dwie kolumny: users (dmid) i downloads (dfid).
-
Wybierz wszystkich użytkowników, którzy pobrali konkretny plik:
SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"
-
Używając powyższych użytkowników, Znajdź wszystkie pobrane pliki:
SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}
-
Policz i uporządkuj wyniki dfid, abyśmy mogli zobaczyć, ile pobrań każdy otrzymany plik:
dfid dl_count_field ---- -------------- 18 103 3 77 903 66
Moja próba odpowiedzi.
Wydaje się być blisko, ale MySql nie odpowiada nawet po 30 sekundach-w końcu restartuję Apache ' a. I nie wiem teraz jak uporządkować liczbę i kolejność bez uzyskiwania błędów składniowych z powodu złożonego oświadczenia--i to może nawet nie być właściwe oświadczenie.
SELECT dfid from downloads_downloads WHERE dmid IN (
SELECT DISTINCT dmid FROM `downloads_downloads` where dfid = "7024")
1 answers
SELECT dfid,count(*)
from downloads_downloads
WHERE dmid IN (
SELECT dmid
FROM downloads_downloads
where dfid = "7024"
)
group by dfid
Lub za pomocą połączenia self
select t1.dfid,count(*)
from downloads_downloads t1
inner join downloads_downloads t2
on t1.dmid = t2.dmid
where t2.dfid = "7024"
Jeśli trwa to zbyt długo, prawdopodobnie będziesz musiał opublikować plan wyjaśnień(google to!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-08 16:29:28