• 19.07.2025, 23:15
  • Register
  • Login
  • You are not logged in.

 

miami flashback

Full Member

mal wieder (postgre)SQL! hilfe bei view.

Tuesday, June 22nd 2010, 11:26pm

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?

This post has been edited 1 times, last edit by "miami flashback" (Jun 22nd 2010, 11:27pm)

Eliza

God

Tuesday, June 22nd 2010, 11:41pm

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

This post has been edited 2 times, last edit by "Eliza" (Jun 22nd 2010, 11:44pm)

(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

Wednesday, June 23rd 2010, 12:09am

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

This post has been edited 1 times, last edit by "miami flashback" (Jun 23rd 2010, 12:33am)

Similar threads