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.

SQL Abfrage über 3 Tabellen (bitte mal nach Datenbanken verschieben..)

Empfohlene Antworten

Veröffentlicht

Hallo habe folgendes Problem:

Ich habe 3 Tabellen:

Projekte

Projekt_ID

Projekt

Taetigkeiten

Taetigkeit_ID

Taetigkeit

Projekttaetigkeiten

Projekt_ID

Taetigkeit_ID

In der 3. Tabelle werden den Projekten Tätigkeiten zugeordnet...

Ich möchte jetzt abfragen, welche Projekte zu einer Tätigkeit gehören...

Leider liefert die Abfrage nicht das gewünschte Ergebnis...


SELECT PROJEKT, TAETIGKEIT

FROM projekte

LEFT JOIN projekttaetigkeiten ON projekte.PROJEKT_ID = projekttaetigkeiten.PROJEKT_ID

LEFT JOIN taetigkeiten ON projekttaetigkeiten.TAETIGKEIT_ID = taetigkeiten.TAETIGKEIT_ID

WHERE projekttaetigkeiten.TAETIGKEIT_ID =1

LIMIT 0 , 30 


sieht jemand den Fehler?

bitte mal nach Datenbanken verschieben..

Leider liefert die Abfrage nicht das gewünschte Ergebnis...

Was bedeutet das genau? Wie sieht das Ergebnis aus?

Auf die Schnelle und ohne zu Testen gemacht!!!

SELECT Taet.Taetigkeit

FROM Projekttaetigkeiten ProTaet

INNER(LEFT) JOIN Projekte Pro

on Pro.Projekt_ID = ProTaet.Projekt_ID

INNER(LEFT) JOIN Taetigkeiten Taet

on Taet.Taetigkeiten_ID = Taet.Taetigkeiten_ID

WHERE Pro.Projekt_ID = 1

Soo sollte die Abfrage meines Wissens nach Funktionieren (das Beispiel ist jetzt auf den MS SQL-Server bezogen). Als Ergebnis solltest du alle Tätigkeiten bekommen, die dem Projekt 1 zugeordnet sind.

Gruß

sorry, hab mich vllt nicht genau genug ausgedrückt....

ich habe die ID einer Tätigkeit... jetzt möchte ich als Abfrage-Ergebnis

alle Projektnamen und Projekt_IDs haben, die mit der Tätigkeit in Verbindung stehen (die Verbindung erzeugt die Tabelle Projekttätigkeiten...)

also genau umgedreht, als die letzte Antwort von Schmarrer

:rolleyes:

Naja dann änder meine Abfrage um.... sollte dann so funktionieren

SELECT Pro.Projekt_ID, Pro.Projekt

FROM Projekttaetigkeiten ProTaet

INNER(LEFT) JOIN Projekte Pro

on Pro.Projekt_ID = ProTaet.Projekt_ID

INNER(LEFT) JOIN Taetigkeiten Taet

on Taet.Taetigkeiten_ID = Taet.Taetigkeiten_ID

WHERE Taet.Taetigkeit_ID = 1

Das Ergebnis sind alle Projekte_ID´s und Projektnamen, welche mt der Tätigkeit 1 verknüpft sind.

Hey hab die Abfrage mal für MySQL umgeschrieben...

aber irgendwie geht das nicht... :-(


SELECT Projekte.Projekt_ID, Projekte.Projekt

FROM Projekttaetigkeiten

LEFT JOIN Projekte

on Projekt.Projekt_ID = Projekttaetigkeiten.Projekt_ID

LEFT JOIN Taetigkeiten

[B]on Taetigkeiten.Taetigkeiten_ID = Taetigkeiten.Taetigkeiten_ID[/B]

WHERE Taetigkeiten.Taetigkeit_ID = 1

Die Fett gedruckte Zeile ist doch auch falsch oder?

müsse doch bestimmt

on Taetigkeiten.Taetigkeit_ID = Projekttaetigkeiten.Taetigkeit_ID

heißen...

aber auch damit bekomme ich den Fehler:

#1054 - Unknown column 'Projekte.Projekt_ID' in 'field list'

mir fällt gerade auf, das man die Tabelle Tätigkeit doch eigentlich gar nicht für die Abfrage braucht...:upps

ich habe doch nur eine Tätigkeits ID und will dazu den Projektnamen...

dann müsste die Abfrage meinen Verständnis nach so aussehen...


SELECT PROJEKT, PROJEKT_ID FROM `projekttaetigkeiten` 

left join projekte on

projekttaetigkeiten.PORJEKT_ID = projekte.PROJEKT_ID

where `TAETIGKEIT_ID` = 6;

Aber das geht nicht:

#1052 - Column 'PROJEKT_ID' in field list is ambiguous

lasse ich PROJEKT_ID im select bereich weg bekomme ich:

#1054 - Unknown column 'Projekttaetigkeiten.PORJEKT_ID' in 'on clause'

:rolleyes::rolleyes::rolleyes:

ich glaub ich habe gerade ein Brett vom Kopf....

#1052 - Column 'PROJEKT_ID' in field list is ambiguous

Bei der Meldung sollte es helfen, der Spalte "PROJEKT_ID" den Namen der Tabelle, in der sie vorkommt (bzw. einen entsprechenden Alias), voranzustellen.

das könnte in der Tat helfen... habe jetzt erstmal Select * genommen und

den schreibfehler bei Projekt verbessert ;-)


SELECT *

FROM `Projekte`

LEFT JOIN projekttaetigkeiten ON Projekttaetigkeiten.PROJEKT_ID = projekte.PROJEKT_ID

WHERE `TAETIGKEIT_ID` =6

die Abfrage scheint jetzt zu laufen.... manchmal hilft es wirklich alles zu löschen und neu zu schreiben.... danke erstmal....

naja die Spalte Projekt ID kommt sowohl in Projekte als auch in Taetigkeiten vor...

... bei Select * werden mir im Ergebnis dann 2 Spalten mit PROJEKT_ID ausgeben... die Werte sind dann logischer Weise gleich....

mit SELECT Projekttaetigkeiten.PROJEKT_ID, PROJEKT FROM..... geht es dann...

aber warum nicht mit PROJEKT.PROJEKT_ID???

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.