Zum Inhalt springen

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


pc-nico

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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'

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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???

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