Zum Inhalt springen

SELECT mit mehreren WHERE-Klauseln


Odaiko

Empfohlene Beiträge

Folgende 2 Tabellen:

tblSchueler

id#Vorname#Name#Klasse#Disziplin#Ergebnis

1 Reiner Zufall 9 1 500m

2 Reiner Zufall 9 2 400m

3 Reiner Zufall 9 3 15min

4 Roland Zufall 9 2 700m

5 Roland Zufall 9 1 300m

6 Roland Zufall 9 3 30min

7 Richard Zufall 8 3 10min

8 Richard Zufall 8 1 200m

tblDisziplin

id#art

1 Spucken

2 Steinewerfen

3 Faulenzen

Nun möchte ich alle als SELECT Befehl in eine Tabelle haben.

die 9. Klasse hat nur die Disziplinen 2,3

die 8. Klasse hat nur die Disziplinen 1,3

So sollte es aussehen:

Name Vorname Klasse Weitendisziplin Zeitdisziplin

Reiner Zufall 9 900m 15min

Roland Zufall 9 1000m 30min

Richard Zufall 8 200m 10min

Mein Ansatz, was aber nur leider für die erste Spalte (Weitendisziplin) zu gehen scheint, da ich nicht weiß, wie ich spaltenmäßig extra eine WHERE Klausel einbauen soll.

SELECT tblSchueler.Name, tblSchueler.Vorname, tblSchueler.Klasse, extraspalte as 'Weitendisziplin', extraspalte as 'Zeitdisziplin'

FROM tblSchueler,tblDisziplin INNER JOIN tblDisziplin ON tblDisziplin.id = tblSchueler.id

WHERE tblSchueler.Disziplin_id IN ((CASE WHEN tblSchueler.Klasee <= 8 THEN '1' ELSE '2' END),3);

Link zu diesem Kommentar
Auf anderen Seiten teilen

SELECT tblSchueler.Name, tblSchueler.Vorname, tblSchueler.Klasse, extraspalte as 'Weitendisziplin', extraspalte as 'Zeitdisziplin'

FROM tblSchueler,tblDisziplin INNER JOIN tblDisziplin ON tblDisziplin.id = tblSchueler.id

WHERE tblSchueler.Disziplin_id IN ((CASE WHEN tblSchueler.Klasee <= 8 THEN '1' ELSE '2' END),3);

Laut deiner Darstellung oben ist der Join falsch. Du verknüpfst die beiden Primary keys... die haben aber nix miteiander zu tun.

Müsste wohl eher so lauten:

FROM tblSchueler,tblDisziplin INNER JOIN tblDisziplin ON [COLOR="Red"]tblDisziplin.id = tblSchueler.disziplin[/COLOR]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na ein 2005er SQL Server ist doch schon ok, der kennt ne PIVOT Funktion.

Die Einheit brauchst aber für deine Aufgabe. Sie stellt ein Gruppierungskriterium dar. Du willst ja schliesslich alle Weiten addieren.

Sogesehen würde ich dir raten, im Ergebnis nur die Zahlenwerte zu halten und dafür in der Tabelle tblDisziplin eine Spalte Einheit einzufügen.

Du kannst dann ein Statement mit PIVOT Funktion darauf loslassen.

Das würde wohl in etwa so ausschaun:

SELECT Name, Vorname, Klasse, [m] AS 'Weite', [MIN] as 'Zeit' 

FROM

(SELECT a.Name, a.Vorname, a.Klasse, Ergebnis , b.Einheit 

	FROM tblSchueler a INNER JOIN tblDisziplin b 

	ON b.id = a.Disziplin

) p

PIVOT

(SUM(Ergebnis) FOR Einheit IN ( [m], [min])

) AS pvt

Goos

PS: du solltest aber kein a und b Alias verwenden, so wie ich das hier getan hab ... is ein ganz schlechter Stil, erhöht aber meiner Meinung nach bei einen so kurzen Statement die Übersicht :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube ich habe falsch gefragt (Gedankenfehler)^^

Und wenn ich die einzelnen Disziplinen ausgeben will?

Name##Vorname##Klasse##Spucken##Faulenzen##Steinewerfen

Reiner Zufall 9 [leer] 400m 15min

Roland Zufall 9 [leer] 700m 30min

Richard Zufall 8 200m [leer] 10min

die 9. Klasse hat nur die Disziplinen 2,3

die 8. Klasse hat nur die Disziplinen 1,3

1 Spucken

2 Steinewerfen

3 Faulenzen

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