tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
279
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hehe_me hehe_me ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    37
    Hallo,

    ich frag mich gerade wie ich es schaffe das alle Gruppen zurückgegeben werden.

    es gibt 3 Tabellen:

    Tabelle "buch_groups_def"
    | id | name |

    Tabelle "buch_groups"
    | buch_group_id | buch_id |

    Tabelle "buecher"
    | id | owner |

    Also die 'buch_groups'-Tabelle ist quasi die mxn-Tabelle


    Diese 3 Tabellen wollte ich mit einer SQL abfrage verknüpfend ausgeben lassen, scheitere jedoch daran, dass die Gruppen in denen keine 'buch_ids' sind bzw. keine 'owner' nicht ausgegeben werden...

    So sieht meine SQL-Abfrage aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    SELECT buch_groups_def.id AS groupid, buch_groups_def.name AS groupname, group_concat( DISTINCT ( CAST( buch_groups.buch_id AS CHAR ) )) AS buch_ids, group_concat( DISTINCT ( buecher.owner) ) AS owners 
     
    FROM buch_groups 
     
    LEFT JOIN buch_groups_def ON buch_groups.buch_group_id = buch_groups_def.id 
     
    RIGHT JOIN buecher ON buch_groups.buch_id = buecher.id 
     
    GROUP BY buch_group_id 
    ORDER BY groupid DESC

    Und das Resultat:


    Code :
    1
    2
    3
    4
    5
    6
    
     
    groupid     groupname                 buch_ids                  owners
    14           action               4082,4085                  peter,stefan
    13          liebe                 4085,4122                 test,lalala
    12          test                     4091,4092,4093       oli,Bill,hans
    7           technik                     4085                    harry


    Gewünscht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     
    groupid     groupname                 buch_ids                  owners
    14            action               4082,4085                  peter,stefan
    34            kunfu                NULL                          NULL
    13          liebe                 4085,4122                 test,lalala
    12          test                   4091,4092,4093          oli,Bill,hans
    45            xxx                    NULL                         NULL
    7           technik                     4085                     harry

    Für Hilfe wäre ich sehr erfreut und ich hoffe ich konnte mich präzise genug ausdrücken

    im voraus
    Besten Dank
    Geändert von hehe_me (16.08.11 um 15:53 Uhr) Grund: Verbesserung
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    buch_groups_def LEFT JOIN buch_groups LEFT JOIN buecher
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    hehe_me hehe_me ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    37
    Hallo und danke für die Antwort.
    Die Änderung klappt nicht.
    Es werden leider immernoch nicht alle Gruppen zurückgegeben..
    Evtl. eine andere Möglichkeit?
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zeig mal deine Umsetzung meines Vorschlages.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    hehe_me hehe_me ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    37
    Ich habe noch direkt nach dem SELECT "buch_groups_def.id AS groupid" in "device_groups_def.name as groupid" geändert.

    Nochmal: Es lag am Group By welches ich in 'groupname' änderte. Jetzt klappt es auch.

    Besten Dank für die bisherige Hilfe..
    Geändert von hehe_me (17.08.11 um 13:00 Uhr)
     

  6. #6
    hehe_me hehe_me ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    37
    Hallo nochmals eine Frage?

    Code :
    1
    2
    
    LEFT JOIN buch_groups ON buch_groups.buch_group_id = buch_groups_def.id
    AND buch_groups_def.name = 'TELLA.technik'


    Mir gibt diese Abfrage zwar ein Resultat zurück. aber wie schaffe ich es, dass hier z.b.
    alle Gruppen TELLA.* zurückgegeben werden?

    Mit:

    Code :
    1
    2
    
    LEFT JOIN buch_groups ON buch_groups.buch_group_id = buch_groups_def.id
    AND buch_groups_def.name = 'TELLA.%'

    bin ich leider nicht erfolgreich.

    Besten Dank im voraus
     

  7. #7
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    LIKE anstatt = sollte funktionieren
     

  8. #8
    hehe_me hehe_me ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    37
    Hallo und guten Morgen chibisuke,

    LIKE "TELLAS.%" liefert mir dies aber das Problem ist das auch Einträge zurückgegeben werden die nicht auf das Suchmuster "TELLAS.%" zutreffen.

    ...
    Geändert von hehe_me (18.08.11 um 13:03 Uhr)
     

  9. #9
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    weil du deinen LEFT JOIN machst und deinen check in der ON clause ausführt.

    warscheinlich ist das was du willst ein INNER JOIN.
     

Ähnliche Themen

  1. MySQL innodb - join abfrage -
    Von Kipperlenny im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 02.06.09, 18:00
  2. MySQL Abfrage Felder von bis möglich ?
    Von katlina im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 05.01.08, 15:34
  3. MySQL Abfrage Felder von bis möglich ?
    Von katlina im Forum PHP
    Antworten: 1
    Letzter Beitrag: 19.12.07, 09:56
  4. Join-Abfrage: Auch Nicht vorhandene Gegenelemente anzeigen
    Von meilon im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 23.06.05, 22:30
  5. [MYSQL] (join-)Abfrage mit zwei IDs
    Von OnkelKarl im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 22.03.05, 17:25

Stichworte