Brösel: SELECT COUNT() verschachteln oder wie

und direkt die nächste frage :))) (KEIN DOPPELPOST)

kann man folgendes vereinfachen:

SELECT * FROM users LIMIT 0,10

SELECT COUNT(*) FROM sessions WHERE id = $id

Wie man sieht erstellt das erste SELECT eine Liste. Nun möchte ich jeden Eintrag überprüfen, ob derjenige auch in der sessions-Tabelle eingetragen ist.
Bisher rufe ich das COUNT() immer in der Schleife und in absolut jedem Durchlauf auf. das muss doch net sein oder????? geht doch bestimmt viel einfacher!

Das ist übrigens ein anderes Thema als der vorherige. Ich beschäftige mich nur den ganzen Tag schon mit meiner sessions-Tabelle :)

  1. kann man folgendes vereinfachen:

    SELECT * FROM users LIMIT 0,10
    Wie man sieht erstellt das erste SELECT eine Liste. Nun möchte ich jeden Eintrag überprüfen, ob derjenige auch in der sessions-Tabelle eingetragen ist.

    Ja, gut, und?

    SELECT COUNT(*) FROM sessions WHERE id = $id

    Bisher rufe ich das COUNT() immer in der Schleife und in absolut jedem Durchlauf auf. das muss doch net sein oder????? geht doch bestimmt viel einfacher!

    Vielleicht gruppieren?

      
    SELECT  
     id,  
     COUNT(*)  
    FROM  
     sessions  
    GROUP BY  
     id  
    
    

    Das ist übrigens ein anderes Thema als der vorherige. Ich beschäftige mich nur den ganzen Tag schon mit meiner sessions-Tabelle :)

    Sehr gut!   ;)

  2. Servus,

    verstehe ich dich richtig: Du liest in obiger Abfrage unter anderem die id des Users aus und verwendest diese dann in der unteren Abfrage. Nun möchtest du das in einem "Abwasch" erledigen.

    Zunächst möchte ich dir nahe legen, dich von SELECT * zu trennen. Gebe stattdessen explizit die Spalten an, die du haben möchtest.

    Für dein Problem möchtest du dich mit JOIN beschäftigen.

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|