php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.12.2006, 10:46  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard [solved] LEFT JOIN - #1066 - Not unique table/alias

hi,
ich habe eine tabelle angelegt, die unter anderem 2 spalten hat, in denen nur die id einer anderen tabelle abgespeichert wird. das problem ist, dass ich die selbe reihe benötige.

Also so:

Tabelle A:
id | id_von_B | andere_id_von_B
_____________________________
1 | 1 | 2

Tabelle B:
id | name
________
1 | Datensatz 1
2 | Datensatz 2

So, hier lese ich also Tabelle A aus, und will für die erste zeile sowohl den datensatz 1 als auch den datensatz 2.

Das Klappt wunderbar:
SELECT B.name LEFT JOIN B ON id_von_B = B.id

Ich benötige jedoch auch den zweiten datensatz, also wollte ich folgendes machen:
SELECT B.name LEFT JOIN B ON id_von_B = B.id LEFT JOIN B ON andere_id_von_b = B.id

Da bekomme ich aber einen Fehler:
#1066 - Not unique table/alias: 'B'

Also, wie kann ich beide datensätze mit einem query bekommen?
moose ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.12.2006, 11:21  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ich versteh nicht ganz was du da fabriziert. Die erste Zeile des Ergebnisses sohl also sowohl "Datensatz1" als auch "Datensatz2" enthalten - dann musst du auch 2 Spalten selektieren.

Außerdem kann ich mir nicht vorstellen, dass deine 1. Abfrage klappt: Du gibst nicht an welche Tabelle mit B "verjoint" werden soll.

Wie es gehen kann:
Select b1.name, b2.name FROM a LEFT JOIN B b1 ON a.id_von_B=b1.id LEFT JOIN B b2 ON a.andere_id_von_B = b2.id
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 10.12.2006, 12:53  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: LEFT JOIN - #1066 - Not unique table/alias

Zitat:
Zitat von moose
SELECT B.name LEFT JOIN B ON id_von_B = B.id LEFT JOIN B ON andere_id_von_b = B.id

Da bekomme ich aber einen Fehler:
#1066 - Not unique table/alias: 'B'
Hier fehlt ja auch ein FROM und wenn du mehrmals die selbe Tabelle joinst, musst du ihr eben auch eindeutige Aliase zuweisen, sonst weiß MySQL nicht, welche Spalte welcher Tabelle du nun selektiert haben möchtest.

Code:
SELECT b1.name, b2.name
FROM tableA AS a
LEFT JOIN tableB AS b1
ON a.id1 = b1.id
LEFT JOIN tableB AS b2
ON a.id2 = b2.id
Zergling-new ist offline   Mit Zitat antworten
Alt 11.12.2006, 22:12  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

sorry, ich wollte das problem vereinfachen und hab nen fehler reingebracht:
ich soll für meine schüle die lehrerseite auf datenbanken umstellen und speicher name, vorname, fach1_id, fach2_id und noch ein paar sachen mehr jedes lehrers in einer tabelle (sc_teacher). die fächer werden in einer zweiten tabelle (sc_subjects).

folgender query funktioniert:
Code:
SELECT first_name, last_name, sc_subjects.name AS subject_1 FROM `sc_teacher` LEFT JOIN sc_subjects ON subject_1 = sc_subjects.id
wenn ich jedoch das zweite fach ins spiel bringe, klappts nimmer (naja, das war klar, aber ich weiß nicht wie man es in einem query richtig macht...)

Code:
SELECT first_name, last_name, sc_subjects.name AS subject_1,sc_subjects.name AS subject_2 FROM `sc_teacher` LEFT JOIN sc_subjects ON subject_1 = sc_subjects.id LEFT JOIN sc_subjects ON subject_2 = sc_subjects.id
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 11.12.2006, 22:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn du mein Posting nicht verstanden hast, dann frag doch einfach nochmal nach! Mit Ignorieren verprellst du den Gegenüber doch nur..
Zergling-new ist offline   Mit Zitat antworten
Alt 12.12.2006, 00:16  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

wenn ichs richtig verstanden habe benötigst du zwei joins auf die selbe tabelle (B). das kannst du tun indem du zweimal einen join auf B setzt, aber ein unterschiedliches alias für beide benutzt und dieses aliase dann in deiner where klausel verwendest.
siehe zerglings antwort
jetzt verstanden?
nikosch ist offline   Mit Zitat antworten
Alt 12.12.2006, 06:41  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

Zitat:
Wenn du mein Posting nicht verstanden hast, dann frag doch einfach nochmal nach! Mit Ignorieren verprellst du den Gegenüber doch nur..
sorry Zergling, ich hab dein posting nicht genau genug gelesen, und gedacht, dass es mich nicht weiterbringt

Vielen dank so klappts jetzt *freu*
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] LEFT JOIN auf mehrere Spalten nystagmussen Datenbanken 3 22.07.2008 08:05
WHERE-Clause im Left Join cycap Datenbanken 2 06.11.2007 11:06
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
LEFT OUTER JOIN auf Nicht-Tabelle inu Datenbanken 15 29.03.2007 20:21
[gelöst] LEFT JOIN und trotzdem nicht alle Sätze da?!? stefanjann Datenbanken 3 24.10.2006 11:32
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
Left outer join, timestamps php-newbie83 Datenbanken 29 27.04.2006 09:29
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
Select Problem Datenbanken 17 16.01.2006 21:54
[Erledigt] LEFT JOIN Query Bildung Datenbanken 6 04.11.2005 15:24
[Erledigt] LEFT JOIN funtkioniert nicht richtig Datenbanken 3 19.10.2005 17:38
[Erledigt] LEFT JOIN Problem Datenbanken 11 21.03.2005 16:36
[Erledigt] left outer join mit bedingung Datenbanken 2 04.03.2005 00:52
Fehler 1066: Not unique table/alias: 'person' Stümper Datenbanken 4 30.07.2004 12:02
den letzte(grösten) eintrag aus LEFT JOIN Datenbanken 2 24.07.2004 18:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
not unique table/alias, not unique table/alias:, #1066 - not unique table/alias:, #1066 - not unique table/alias, not unique table alias, left join as, left join alias, sql not unique table/alias, \not unique table/alias:\, 1066 not unique table alias, 1066 - not unique table/alias, join alias, fehler 1066, sql not unique table/alias:, not unique, sql not unique table alias, left join not unique table/alias:, left join not unique table/alias, left join gleiche namen, join table

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.