PostgreSQL und Spaltenalias

finke

finke

Eroberer
Hi, ich hab Folgendes Problem:
-3 Tabellen
- die über FK's in verbindung stehen
- ich brauch aus jeder der 3 Tabellen Daten
- Um die Daten der 3 Tabellen nicht mit PHP sortieren zu müssen, hab ich nen Cross Join dafür Geschrieben:
SELECT "bilder"."id", "bilder"."name", "user".name", "datum", "galerie_kategorien"."name" FROM "web"."bilder", "web"."user", "web"."galerie_kategorien" WHERE "user"."id" = "bilder"."autor" AND "bilder"."kategorie" = "galerie_kategorien"."id" ORDER BY "bilder"."id" LIMIT 1 OFSET 0
(Wie man sieht soll es nur genau 1 Datensatz auslesen. Die komische Kombination aus Limit und Offset ruht daher, das er eigentliche nen zufälligen Datensatz auslesen soll, dafür frag ich die anzehl dar Datensätze ab, und las in ofset dann ne zahl zwichen 0 und Datensätze -1 einsetzen. Vielleicht hat wer dafür auch noch nen Besserung Vorschlag.

Das Problem ist, das ja nun mehrere Spalten mit dem gleichen Namen im ergebnis stehen würden (3 * "name") da das verboten ist, wollte ich dafür Spaltenalias festlegen, Ergebnis:
SELECT "bilder"."id", "bilder"."name" AS "bname", "user".name" AS "uname", "datum", "galerie_kategorien"."name" AS "kname" FROM "web"."bilder", "web"."user", "web"."galerie_kategorien" WHERE "user"."id" = "bilder"."autor" AND "bilder"."kategorie" = "galerie_kategorien"."id" ORDER BY "bilder"."id" LIMIT 1 OFSET 0

Funktioniert auch nicht, erhalte Fehlermeldung:
SQL Fehler:

ERROR: syntax error at or near "" AS ""
LINE 1: ...der"."id", "bilder"."name" AS "bname", "user".name" AS "unam...
^

In der Anweisung:
SELECT "bilder"."id", "bilder"."name" AS "bname", "user".name" AS "uname", "datum", "galerie_kategorien"."name" AS "kname" FROM "web"."bilder", "web"."user", "web"."galerie_kategorien" WHERE "user"."id" = "bilder"."autor" AND "bilder"."kategorie" = "galerie_kategorien"."id" ORDER BY "bilder"."id" LIMIT 1 OFSET 0

Hab nichts gefunden, das sowas verboten Wäre, und cih weis, das PostgreSQL Spaltenalias unterstützt.

Kann mir wer sagen, wo ich den, wohl mal wieder einfachsten, Fehler übersehe?
Tabellen: bilder:
id integer nextval('bilder_id_seq'::regclass)
name character varying(25)
autor integer
datum date NOT NULL
kategorie integer NOT NULL
hoehe integer NOT NULL
breite integer NOT NULL
kb integer NOT NULL

user (gekürzt):
id integer NOT NULL nextval('"user_ID_seq"'::regclass)
name character varying(25) NOT NULL

galerie_kategorien:
id integer NOT NULL nextval('galerie_kategorien_id_seq'::regclass)
name character varying(25) NOT NULL

FK-Beziehungen Bestehen zwischen:
- "user"."id" und "bilder"."autor"
- "bilder"."kategorie" und "galerie_kategorien"."id"
 
So, wurde auf den Fehler hingewiesen, hab jetzt aber nen anderes Problem Hab mitlerweile die Version der abfrage:
SELECT "bilder"."id", "bilder"."name" AS "bname", "user"."name" AS "uname", "bilder"."datum", "galerie_kategorien"."name" AS "kname", count("galerie_koments".*) AS anz FROM "web"."bilder", "web"."user", "web"."galerie_kategorien", "web"."galerie_koments" WHERE "user"."id" = "bilder"."autor" AND "bilder"."kategorie" = "galerie_kategorien"."id" AND "bilder"."id" = "galerie_koments"."zu" GROUP BY "bilder"."id", "bname", "uname", "bilder"."datum", "kname" ORDER BY "bilder"."id" LIMIT 1 OFFSET 0

Nun hab ich folgendes Problem:
Wenn ich einen neuen Datensatz in zb in die Tabelle Bilder eintrage, und anschließend dieses Querry auf diesen Datensatz anwende, erhalte ich die leere Menge. Das liegt daran, das in der Tabelle "galerie_koments" noch kein Eintrag ist. kann ich das irgendwie festlegen, das wenn dort nichts drin steht count() "0" zurück gibt anstatt, seinbar NULL, was dazu führt, das der Datensazu nicht angezeigt wird?
 

Ähnliche Themen

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Samba 4.1.9 mit Bind 9.9.4

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

CentOS 6.3 RADIUS - Keine Verbindung möglich

Akonadi startet nicht mehr

Zurück
Oben