Sylvio Kampusch: MySQL-5.0 2 Queries zu einer kombinieren?

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

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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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

      1. Hallo!

        Ihr habt mir super weitergeholfen, Eure Tipps waren sehr aufschlussreich, vielen Dank und Euch noch einen schönen Tag!

        Syl

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