tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
529
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    genji3000 genji3000 ist offline Grünschnabel
    Registriert seit
    Nov 2004
    Beiträge
    3
    Hallo,

    Ich möchte das Ergebnis aus einem query für einen neuen query benutzen. Ich würde das gerne in nur einem query machen.

    Zuerst hole ich mir mit diesem query aus 2 Tabellen die groupID, wo ich Moderator und Mitglied bin:

    SELECT groupID as mygroups FROM groups WHERE moderatorID = 13
    UNION
    SELECT groupID as mygroups FROM member_groups WHERE memberID = 13

    Nun möchte ich mit einem neuen query alle Gruppen rausfinden, wo ich kein Mitglied bin:
    SELECT groupID FROM groups WHERE groupID != mygroups

    Leider funktioniert das so nicht. Wie kann ich das besser machen?
     

  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    erstens müsste das wenn schon WHERE groupID NOT IN mygroups heißen, zweitens funktioniert aber auch das nicht.

    Du könntest höchstens die gleiche Abfrage noch einmal in einer Subquery benutzen.

    So müsste es auch gehen:

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT groupID FROM 
       (
          (SELECT groupID, moderatorID AS userID FROM groups)
          UNION
          (SELECT groupID, memberID AS userID FROM member_groups)
       ) AS RESULT
       GROUP BY groupID 
          HAVING SUM(userID = 13) = 0

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  3. #3
    genji3000 genji3000 ist offline Grünschnabel
    Registriert seit
    Nov 2004
    Beiträge
    3
    Hi,

    danke für deine Antwort. Das funktioniert.
    Allerdings brauche ich noch andere Spalten.

    SELECT g.groupID, g.group_name, g.group_description, gc.categories_name
    FROM groups g, groups_categories gc, member_groups mg
    WHERE groupID = Ergebnis aus deiner Abfrage:
    SELECT groupID FROM

    (

    (SELECT groupID, moderatorID AS userID FROM groups)

    UNION

    (SELECT groupID, memberID AS userID FROM member_groups)

    ) AS result

    GROUP BY groupID

    HAVING SUM(userID = 13) = 0

    Wie kann ich die zusätzlichen Spalten hier einbauen?
     

  4. #4
    genji3000 genji3000 ist offline Grünschnabel
    Registriert seit
    Nov 2004
    Beiträge
    3
    Hi,
    ich habe das jetzt mit einem Subquery gelöst.

    SELECT g.groupID, g.group_name, g.group_description, gc.categories_name
    FROM `groups` g, member_groups mg, groups_categories gc
    WHERE g.groupID != ALL (SELECT groups.groupID FROM groups JOIN member_groups ON groups.groupID = member_groups.groupID WHERE member_groups.memberID = '" . addslashes ( $memberID ) . "'
    )
    AND gc.categoriesID = g.categoriesID
    GROUP BY g.groupID

     

Ähnliche Themen

  1. php+mySQL: Daten einer früheren Query in einer neuen Query wiederverwenden
    Von bekay im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 06.04.09, 11:50
  2. INSERT query schnell zu UPDATE query machen
    Von breytex im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 16.07.08, 08:19
  3. MySQL Query Browser - Query History
    Von flashray im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 04.10.07, 15:11
  4. MySql Query
    Von messmar im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 22.08.07, 22:12
  5. mysql query
    Von DarkSummer im Forum PHP
    Antworten: 1
    Letzter Beitrag: 26.06.02, 23:09