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:
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:
Funktioniert auch nicht, erhalte Fehlermeldung:
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:
user (gekürzt):
galerie_kategorien:
FK-Beziehungen Bestehen zwischen:
- "user"."id" und "bilder"."autor"
- "bilder"."kategorie" und "galerie_kategorien"."id"
-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:
(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.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
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"