Ich habe zwei Abfragen zu bezogenen Tags aus einer MySQL-Datenbank, eine funktioniert, eine nicht, meine Frage ist: "warum?"Mysql Sub-Select Problem
Problem: Wenn die erste Abfrage ausgeführt wird, der MySQL-Server erhält 100% CPU-Auslastung und muss neu gestartet werden wieder funktionieren.
Abfrage 1 (funktioniert nicht):
SELECT tags.*, COUNT(ct.company_id) AS count
FROM company2tag ct, tags
WHERE ct.company_id IN (
SELECT ct.company_id FROM company2tag ct
WHERE ct.tag_id = 18
GROUP BY ct.company_id
HAVING COUNT(ct.company_id) = 1
)
AND tags.id != 18
AND tags.id = ct.tag_id
GROUP BY ct.tag_id
ORDER BY count DESC
LIMIT 5;
Abfrage 2 (Werke):
SELECT tags.*, COUNT(ct.company_id) AS count
FROM company2tag ct, tags
WHERE ct.company_id IN (5864, 5870, 6140, 6221, 6268)
AND tags.id != 18
AND tags.id = ct.tag_id
GROUP BY ct.tag_id
ORDER BY count DESC
LIMIT 5;
Zu meinem Verständnis der beiden Abfragen über sie völlig gleich, die nur Der Unterschied besteht darin, dass die erste Abfrage ihre "company_id's" über einen Subselect abruft.
Wie kann das passieren?
Und wie geht die Unterabfrage von alleine? – paxdiablo
funktioniert einwandfrei, es gibt eine Liste von company_id's zurück. – smoove
Ich kann nicht herausfinden, wie Ihre zweite Abfrage funktioniert, weil die SQL nicht gültig ist. Alle ausgewählten Felder, die keine Aggregatfunktionen sind, sollten in der GROUP BY-Liste (Tags. * In Ihrem Fall) vorhanden sein. – Tihauan