Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[mysql]select mit inhalten aus mehreren Tabellen

Empfohlene Antworten

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

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

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

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?

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.