MySQL-5.0 2 Queries zu einer kombinieren?
Sylvio Kampusch
- datenbank
0 EKKi0 Vinzenz Mai0 Sylvio
0 Vinzenz Mai
Hallo Community,
Ich habe folgendes Problem. Ich habe zwei SQL-Anfragen, die ich gerne kombinieren möchte.
SELECT id FROM relationstabelle WHERE other_id IN (1,2,3,4,5)
SELECT * FROM tabelle WHERE id IN ( <ergebnis der ersten abfrage> )
Ich dachte es reicht wenn man die erste Anfrage als Subquery in die zweite reinpackt, aber leider lege ich damit den Datenbankserver lahm.
Ich hatte zwischenzeitlich überlegt, den Zwischenschritt in php zu machen, denke aber, dass es performanter geht.
Vielen Dank für Eure Antworten,
Sylvio
Mahlzeit,
SELECT id FROM relationstabelle WHERE other_id IN (1,2,3,4,5)
SELECT * FROM tabelle WHERE id IN ( <ergebnis der ersten abfrage> )
Versuch's mal mit:
SELECT tabelle.* FROM tabelle JOIN relationstabelle ON tabelle.id = relationstabelle.id WHERE relationstabelle.other_id IN (1,2,3,4,5)
Ich hatte zwischenzeitlich überlegt, den Zwischenschritt in php zu machen, denke aber, dass es performanter geht.
Auf jeden Fall - lies Dich in das Thema JOINs ein.
MfG,
EKKi
Hallo EKKi,
SELECT id FROM relationstabelle WHERE other_id IN (1,2,3,4,5)
SELECT * FROM tabelle WHERE id IN ( <ergebnis der ersten abfrage> )Versuch's mal mit:
SELECT tabelle.* FROM tabelle JOIN relationstabelle ON tabelle.id = relationstabelle.id WHERE relationstabelle.other_id IN (1,2,3,4,5)
Du hast das Schlüsselwort DISTINCT vergessen :-)
~~~sql
SELECT DISTINCT -- schließlich soll jeder Datensatz nur einmal angezeigt werden
tabelle.* -- SELECT * ist immer noch böse[tm]
FROM
tabelle
INNER JOIN
relationstabelle
ON
tabelle.id = relationstabelle.id
WHERE relationstabelle.other_id IN (1, 2, 3, 4, 5)
Am besten sollte es MySQL dem Fragenden EXPLAINen.
Freundliche Grüße
Vinzenz
Hallo!
Ihr habt mir super weitergeholfen, Eure Tipps waren sehr aufschlussreich, vielen Dank und Euch noch einen schönen Tag!
Syl
Hallo Sylvio,
SELECT id FROM relationstabelle WHERE other_id IN (1,2,3,4,5)
SELECT * FROM tabelle WHERE id IN ( <ergebnis der ersten abfrage> )Ich dachte es reicht wenn man die erste Anfrage als Subquery in die zweite reinpackt, aber leider lege ich damit den Datenbankserver lahm.
siehe https://forum.selfhtml.org/?t=170018&m=1110797
Freundliche Grüße
Vinzenz