Anzeige:
Ergebnis 1 bis 6 von 6

Thema: 2 Abfragen verknüpfen

  1. #1
    BerlinerKindl
    Gast

    2 Abfragen verknüpfen

    Hallo,

    Ich versuche gerade 2 mySQL Abfragen in einer zu kombinieren. Will aber nicht so wie ich will

    Table User
    id , nick, groupid ....

    Table groups
    id, name, can_admin, can_smod, can_mod, can_user, .....


    ich möchte alles aus beiden Tabellen auslesen.
    1. Bedingung: Tabelle User groupid == Tabelle groups id
    2. Bedingung: Tabelle groups can_admin = 0
    3. Bedingung: Tabelle groups can_smod = 0
    4. Bedingung: Tabelle groups can_mod = 1
    5. Bedingung: Tabelle groups can_user = 0


    Ich habe da schon die verschiedensten Kombinationen getestet. Kein Erfolg

    Einer meiner Fehlschläge:
    SELECT users.* FROM users WHERE users.grouip='groups.id' IN (SELECT groups.* FROM groups WHERE users.goupid=groups.id && groups.can_admin='0' && groups.can_smod='0'&& groups.can_mod='1' && groups.can_user='0')

    Evtl kann mir da mal einer auf die Sprünge helfen

    Gruss

    BerlinerKindl

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Subselects sind bei MySQL AFAIK nicht möglich!


  3. #3

  4. #4
    Registrierter Benutzer
    Registriert seit
    03.07.2002
    Beiträge
    21
    Moin!

    Die Frage ist, warum ein Subselect?

    Ich täts so machen:
    Code:
    SELECT u.*
      FROM users u, groups g
      WHERE u.groupid = g.groupid AND g.can_admin = 0 AND g.can_smod = 0 
        AND g.can_mod = 1 AND g.can_user = 0
    u und g sind Aliasnamen für die Tabellen, die nur für diese Abfrage gültig sind. Ist n bischen kürzer

    iGEL

  5. #5
    BerlinerKindl
    Gast
    Morgen,

    danke, werde das mal testen.

    Gruss Marcus

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Selbst wenn Subselects gehen, wußte ich bisher auch nicht, dann kann die Abfrage nicht gehen, denn:
    Code:
    SELECT users.* FROM users WHERE users.grouip='groups.id' IN (SELECT groups.* FROM groups WHERE users.goupid=groups.id && groups.can_admin='0' && groups.can_smod='0'&& groups.can_mod='1' && groups.can_user='0')
                                                 ^^^^^^^^^^(1)                                     ^^^^^^^^^^^(2)
    (1) Was nun? "=" oder "IN", beides zusammen kann nicht gehen.
    (2) Ich denke du fragst in diesem select die tabelle 'groups' was soll da die 'users'?

    Ich denke (habs nicht probiert) es sollten wenn dann lauten:
    Code:
    SELECT * FROM users WHERE groupid IN (SELECT * FROM groups WHERE can_admin='0' && can_smod='0'&& can_mod='1' && can_user='0')
    PS: besser wäre es die Alles-Abfrage ('*') durch eine konkrete Abfrage ersetzen daß könnte die Abfrage in größeren DBs beschleunigen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •