Mailinglisten-Archive |
Peter Muessig-Trapp wrote: > > Moin, moin! > > Ich muss eine Mehrtabellenabfrage realisieren, von der ich > dachte, sie sei einfach, ich kriegs aber nich hin :'-( > > Ich habe folgende Tabellenstruktur: > > Tab1: aktivitaet (Haupttabelle) > > id stufa1 stufa2 stufa3 vorname name hobby .... usw usw > laengliche Tabelle > 33 250 430 Karl Holz 04 > 34 120 Olga Holz 03 > 35 Ralf Stroh 01 > 36 240 Hans Stahl > ... > > (es koennen also NULL-Werte in der Tabelle stehen) > > Weiter habe ich diverse Schluesseltabellen: > > Tab2: stufa (Schluesseltabelle) > > schluessel name > 120 Ingenieur > 240 Mathematik > 250 Informatik > 430 Sozialwiss > ... > > Tab3: hobby (Schluesseltabelle) > > schluessel name > 01 Disco gehen > 02 Buecher lesen > 03 viel Essen > 04 lang schlafen > > Ein SELECT soll mir folgendes Ergebnis produzieren: > > 33, 'Mathematik', 'Sozialwiss', '' , 'Karl', 'Holz', 'lang schlafen', > ... usw > > ... und so hab ichs versucht, abers funxt nur, wenn keine > Zellen NULL enthalten :( > > select > a.id, > s1.name, > s2.name, > s3.name, > a.vorname, > a.name, > h.name > > from > > aktivitaet a, > stufa s1, stufa s2, stufa s3, > hobby h > > where > > a.stufa1 = s1.schluessel and > a.stufa2 = s2.schluessel and > a.stufa3 = s3.schluessel and > a.hobby = h.schluessel and > > i.id =33 > > Jemand Ideen? > Oder sollte ich die Tabellenstruktur anders machen? > > Gruesse aus Hannover, Peter Hallo Peter Die Tabellenstruktur ist absolut OK. Um die NULL Werte auch zu bekommen, musst Du lediglich LEFT JOIN's statt der normalen Join's verwenden: SELECT a.id , IFNULL( s1.name, '' ) , IFNULL( s2.name, '' ) , IFNULL( s3.name, '' ) , a.vorname , a.name , IFNULL( h.name, 'Keine Hobbies :)' ) FROM aktivitaet AS a LEFT JOIN stufa AS s1 LEFT JOIN stufa AS s2 LEFT JOIN stufa AS s3 LEFT JOIN hobby AS h WHERE a.stufa1 = s1.schluessel AND a.stufa2 = s2.schluessel AND a.stufa3 = s3.schluessel AND a.hobby = h.schluessel AND a.id = 33 Die IFNULL()'s habe ich nur eingebaut, damit Du Leerstrings statt NULL Werte zurueckbekommst. Tschau Christian
php::bar PHP Wiki - Listenarchive