Zum Inhalt springen

[mysql]select mit inhalten aus mehreren Tabellen


wurtzel

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

î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.B) 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...