• 19.07.2025, 10:16
  • Registrieren
  • Anmelden
  • Du bist nicht angemeldet.

 

miami flashback

Full Member

mal wieder (postgre)SQL! hilfe bei view.

Dienstag, 22. Juni 2010, 23:26

moin allerseits,

häng gerade an nem eigentlich recht trivialen problem, hab nur (mal wieder) nen brett vorm kopp... ich hab ne tabelle

raum:
PK ID
kapazität
gebäude

"findet_statt":
PK ID
FK Vortrag auf Vortrag.ID
FK Raum auf Raum.ID

Vortrag
PK ID
Thema
Details

(und nochn paar mehr)

und ich will nen view, welcher mir sämtliche vorträge anzeigt, inkl. details, maximale kapazität und die anzahl der belegten plätze (über tabelle "nimmt_teil").

CREATE VIEW "Übersicht_Vorträge" AS
SELECT
"Vortrag"."Thema",
"Vortrag"."Details",
"Vortrag"."Voraussetzung",
(SELECT COUNT(*) FROM "teilnahme","Vortrag" WHERE "teilnahme"."V_ID" = "Vortrag"."ID") AS Hoerer,
(SELECT "Raum"."Kapazität" FROM "Raum" JOIN "findet_statt" ON ("findet_statt"."Raum"="Raum"."ID")JOIN "Vortrag" ON ("Vortrag"."ID"="findet_statt"."Vortrag")) AS Maximal
FROM "Vortrag", "findet_statt", "Raum"
WHERE "Vortrag"."geprüft_von" > '0'
AND "Vortrag"."Status" = 'zugelassen';

Problem: Das Dingen fliegt mir bei "Maximal" mit "ERROR: more than one row returned by a subquery used as an expression" um die ohren, was ja auch klar ist, mehrere ergebnisse auf ein feld.
wie krieg ich das gelöst?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »miami flashback« (22. Juni 2010, 23:27)

Eliza

God

Dienstag, 22. Juni 2010, 23:41

Du versuchst mit deinem Code eine einzelne Zeile mit einer kompletten Tabelle zu verbinden. Du kannst das ganze lösen indem du anstatt die JOIN durch WHERE und AND ersetzt. Damit kannst du einzelne Räume auswählen, angenommen dass die Kombinationen aus der Raum.ID und der Vortrag.ID einzigartig sind.
Die Unterabfrage müsste so aussehen:

(SELECT "Raum"."Kapazität" FROM "Raum", "findet_statt", "Vortrag" WHERE "Vortrag"."ID"="findet_statt"."Vortrag" AND "findet_statt"."Raum"="Raum"."ID") AS Maximal

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Eliza« (22. Juni 2010, 23:44)

(14:03:23) (Cerbis_Latran) Dude, uhm. Do me a personal favor?
(14:03:51) (Eliza) what is it?
(14:04:04) (Cerbis_Latran) Never kill anyone. You'd enjoy it far too much.

miami flashback

Full Member

Mittwoch, 23. Juni 2010, 00:09

beim "select * from "Übersicht_Vorträge" soll Thema, Detail, Voraussetzung, die Anzahl der Hörer sowie die Maximale Anzahl erscheinen.

Im Augenblick habe ich in der "nimmt_teil" 2 verschiedene Datensätze, die jeweils auf bei FK auf andere Vorträge zeigen. Count wirft jetzt 2 raus, was garnicht meine Intention gewesen ist: In der aktuellen Zeile
soll ja nur angezeigt werden, wer zu dem "aktuellen" Vortrag geht, sprich:

1 Vortrag1 Detail1 keine1 1 500
2 Vortrag2 Detail2 keine2 1 250.

Deins hilft mir ja nicht weiter, aufgrund meiner falsch formulierten Problemstellung.

update:

http://de.wikibooks.org/wiki/Einf%C3%BCh…abler_Selektion

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »miami flashback« (23. Juni 2010, 00:33)

Ähnliche Themen