wurtzel Geschrieben 30. November 2006 Teilen Geschrieben 30. November 2006 ch habe 3 ( Firmen, Gruppen, Mitarbeiter) tabellen die nach folgendem Muster aufgebaut sind ID , Name, Vorname, Strasse, .... und eine tabelle aktionen AID Utyp ENUM('F','G','M') // Angabe welche der obrigen Tabellen zugeordnet ist Uid // Id in der obrigen Tabelle Nun möchte ich eine Ausgabe AID, Utyp, Name, Vorname, Strasse select AId, Utyp, if(a.Utyp='M',(select m.name from mitarbeiter m where m.ID=a.Uid), if(a.Utyp='F' , (select f.name from firmen f where f.ID=a.Uid), if(a.eUtyp='G',(select g.name from gruppen g where g.ID=a.Uid)))) as name, if(a.Utyp='M',(select m.vorname from mitarbeiter m where m.ID=a.Uid), if(a.Utyp='F',(select f.vorname from firmen f where f.ID=a.Uid), if(a.eUtyp='G',(select g.vorname from gruppen g where g.ID=a.Uid)))) as vorname if(a.Utyp='M',(select m.strasse from mitarbeiter m where m.ID=a.Uid), if(a.Utyp='F',(select f.strasse from firmen f where f.ID=a.Uid), if(a.eUtyp='G',(select g.strasse from gruppen g where g.ID=a.Uid)))) as strasse from aktionen gibt es eine möglichkeit die Abfrage nach name, vorname, strasse in einer subquery zusammen zufassen _________________ Das Problem ist der Anfang einer Lösung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 4. Dezember 2006 Teilen Geschrieben 4. Dezember 2006 Die Tabellen scheinen ja komplett gleich zu sein vom Aufbau. Wieso fasst du die 4 Tabellen nicht in 1 zusammen? Also: ID Name Vorname Strasse Typ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wurtzel Geschrieben 4. Dezember 2006 Autor Teilen Geschrieben 4. Dezember 2006 das sind 3 tabellen aus unterschiedlichen Teilprojekten und sie überschneiden sich nur in den ausgewählten (relevanten) spalten das ... sollte die weiteren spalten der Tabellen andeuten die nicht identisch sind wenn das so einfach ginge die in einer tabelle zusammen zu fassen hätte ich das schon getan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 5. Dezember 2006 Teilen Geschrieben 5. Dezember 2006 Und was willst du jetzt genau mit dieser Abfrage machen? Alle Daten in einem Resultset haben? SELECT Name, Vorname, Strasse FROM Tabelle1 UNION SELECT Name, Vorname, Strasse FROM Tabelle2 UNION SELECT Name, Vorname, Strasse FROM Tabelle3 und wenn du das noch sortieren willst, dann mach noch ein select außenrum SELECT Name, Vorname, Strasse FROM ( SELECT Name, Vorname, Strasse FROM Tabelle1 UNION SELECT Name, Vorname, Strasse FROM Tabelle2 UNION SELECT Name, Vorname, Strasse FROM Tabelle3 ) ORDER BY Name Oder ist es nicht das, was du willst? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wurtzel Geschrieben 5. Dezember 2006 Autor Teilen Geschrieben 5. Dezember 2006 Ich glaube das könnte was werden ich werde es dann mal testen da es den vorteil hat das die if bedingungen weg fallen würden und problemlos andere tabellen noch eingebunden werden könnten vielen dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
rawi Geschrieben 5. Dezember 2006 Teilen Geschrieben 5. Dezember 2006 îm normalfall schreibt man den primary key in die tabelle mit hinein. also 1 firma hat n mitarbeiter. wenn es ein Feld id zur firma gibt, dann sollte in der tabelle mitarbeiter diese feld stehen. firma_id 1 2 3 . . n mitarbeiter.firmen_id 1 mitarbeiter.firmen_id 1 mitarbeiter.firmen_id 2 mitarbeiter.firmen_id 2 . . . mitarbeiter.firmen_id n dann brauchst du den join select * from firmen inner join mitarbeiter on firmen.firma_id=mitarbeiter.firmen_id where (z. firmen.firmen_id = 1 selectiert alles der firma und die mitarbeiter der firma. wenn dort keine verküpfungen dieser art sind, ist nicht klar wer wo arbeitet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.