kostenloser Webspace werbefrei: lima-city


3 SELECTS verbinden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    Hey,

    wie kann man folgende 3 SELECTS in 1 SELECT verarbeiten?

    SELECT v.name, COUNT(*) FROM verein.v
    INNER JOIN tabelle1 ON  t1. id= v.id
    INNER JOIN tabelle2  ON  t2. id= v.id
    INNER JOIN tabelle3 ON  t3. id= v.id
    WHERE 
    spalte1 = 'Wert'
    AND
    spalte2 = spalte3
    ORDER BY spalte4
    GROUP BY spalte4
    
    SELECT v.name, COUNT(*) FROM verein.v
    INNER JOIN tabelle1 ON  t1. id= v.id
    INNER JOIN tabelle2  ON  t2. id= v.id
    INNER JOIN tabelle3 ON  t3. id= v.id
    WHERE 
    spalte1 = 'Wert'
    AND
    spalte2 > spalte3
    ORDER BY spalte4
    GROUP BY spalte4
    
    SELECT v.name, COUNT(*) FROM verein.v
    INNER JOIN tabelle1 ON  t1. id= v.id
    INNER JOIN tabelle2  ON  t2. id= v.id
    INNER JOIN tabelle3 ON  t3. id= v.id
    WHERE 
    spalte1 = 'Wert'
    AND
    spalte2 < spalte3
    ORDER BY spalte4
    GROUP BY spalte4



    das sind jetzt natürlich keine funktionierendes Statements, es war ne Frage von einem Freund. Aber würd mich auch interessieren ob man das als 1 SELECT absetzen kann?
    mit UNION?

    Beitrag zuletzt geändert: 28.5.2009 17:09:43 von myhead
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    sehe ich das richtig, dass immer nur die Bedingung

    spalte2 = spalte3


    geänder wird? Dann könntest du nämlich folgendes machen:

    SELECT v.name, COUNt(*), (spalte2 - spalte3) AS differenz FROM ...


    Wenn du noch nach differenz sortierst bekommst du die Ergebnisse auch in der richtigen Reihenfolge. Mit PHP kannst du dann überprüfen, ob es kleiner, größer oder gleich ist.

    ps3web
  4. kriegdervoelker

    kriegdervoelker hat kostenlosen Webspace.

    denke müsste eigentlich mit UNION klappen

    also
    Statement
    UNION
    Statement
  5. kriegdervoelker schrieb:
    denke müsste eigentlich mit UNION klappen

    also
    Statement
    UNION
    Statement


    Aber dann würde seine WHERE-Anweisung keinen Sinn mehr machen.
  6. SELECT v.name, COUNT(*) FROM verein.v
    INNER JOIN tabelle1 ON  t1. id= v.id
    INNER JOIN tabelle2  ON  t2. id= v.id
    INNER JOIN tabelle3 ON  t3. id= v.id
    WHERE 
    spalte1 = 'Wert'
    AND ( 
    (spalte2 = spalte3)
    OR
    (spalte2 > spalte3)
    ORDER BY spalte4
    GROUP BY spalte4


    oder gleich:
    SELECT v.name, COUNT(*) FROM verein.v
    INNER JOIN tabelle1 ON  t1. id= v.id
    INNER JOIN tabelle2  ON  t2. id= v.id
    INNER JOIN tabelle3 ON  t3. id= v.id
    WHERE 
    spalte1 = 'Wert'
    AND 
    spalte2 >= spalte3
    ORDER BY spalte4
    GROUP BY spalte4


    Das sollte wohl alles in einmal ausgeben!

    Beitrag zuletzt geändert: 28.5.2009 19:38:46 von deineagentur
  7. deineagentur schrieb:
    [...]


    Nope, du hast den dritten Query übersehen. Bei dem muss es entweder > = oder < sein. Also immer true. Die erste vorgeschlagene Lösung ist schon richtig...
  8. Oh stimmt habe nicht gesehen das dort ein Scrollbalken war.

    Dann stimmt der erste vorschlag schon.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!