30. November 200619 j 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
4. Dezember 200619 j 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
4. Dezember 200619 j 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
5. Dezember 200619 j 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?
5. Dezember 200619 j 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
5. Dezember 200619 j î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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.