Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

SQL Inner Join Problem

Diskussion: SQL Inner Join Problem im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo Habo. Es handelt sich um folgende Tabellen die ich mit Code: SELECT * FROM tbl_user INNER JOIN tbl_Gruppen ...

Antwort
Alt 14.03.08, 13:36   #1 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard SQL Inner Join Problem

Anzeige

Hallo Habo.

Es handelt sich um folgende Tabellen die ich mit

Code:
SELECT * FROM tbl_user INNER JOIN tbl_Gruppen ON tbl_user.gruppe_zwischen_id = tbl_gruppe_zwischen.tbl_user_ID
abfragen möchte.

-----------------------
tbl_user
id
loginname
nickname
email
passwort
gruppe_zwischen_id


tbl_gruppe_zwischen
id
tbl_user_ID
tbl_gruppen_ID

tbl_gruppen
id
namen

SQL spuckt diese Fehlermeldung aus :

#1054 - Unknown column 'tbl_gruppe_zwischen.tbl_user_ID' in 'on clause'

Ich möchte halt eine n:m Relation realisieren und alle Eigenschaften der tbl_user ausgeben. Dazu habe ich eine Zwischentabelle angelegt.

Muss ich da noch irgendwelche Beziehungen wie in Access setzen oder funktioniert das so?
Wenn ja, wie realisiere ich das mit PhpMyAdmin.
Wenn nein, was ist an meinem Sql-Query falsch?

LG, weau
weau ist offline   Mit Zitat antworten
Alt 14.03.08, 14:05   #2 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Du joinst ja nirgends die "tpl_gruppe_zwischen", deshalb kommt der Fehler.

Code:
SELECT
          u.*,
          g.*
FROM
          tbl_user u

JOIN
          tbl_gruppen_zwischen gz
ON
          u.id = gz.tbl_user_ID

JOIN
          tbl_gruppen g
ON
          g.id = gz.tbl_gruppen_ID
So sollte das ganze funktionieren.

Ach ja, ich würde die Tabelle "tbl_gruppe_zwischen" nochmal überdenken.

Ich würde das ganze so machen:

user_group_mappings
user_id
group_id

Und die beiden Spalten als Primary Key.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.03.08, 14:18   #3 (permalink)
Themenstarter
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

THX
Code:
SELECT * FROM tbl_user INNER JOIN tbl_gruppe_zwischen ON tbl_user.id = tbl_gruppe_zwischen.tbl_user_ID JOIN tbl_Gruppen ON tbl_Gruppen.ID = tbl_gruppe_zwischen.tbl_gruppen_ID
funktioniert!

Aber warum sollte ich die Zwischentabelle überdenken? Erkläre mal wie du das mit dem Primary Keys meinst?

Der Inner Join nimmt ja auch leider eine ziemliche Abarbeitungszeit in Anspruch. Gibt es da noch irgendwelche anderen Methoden eine n:m Relation zu lösen?
weau ist offline   Mit Zitat antworten
Alt 14.03.08, 14:43   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Zitat:
Aber warum sollte ich die Zwischentabelle überdenken? Erkläre mal wie du das mit dem Primary Keys meinst?
Naja, bei diesem DB Design ist es möglich, dass in der tbl_gruppe_zwischen folgendes auftreten kann:

id - tbl_user_ID - tbl_gruppe_ID
1 - 1 - 2
2 - 1 - 2
3 - 1 - 2

Was ja wohl keinen Sinn macht, da ein User bestimmt nicht mehrmals in der gleichen Gruppe vorkommt. Wenn man sowas beim DB Design berücksichtigt, dann hat man es später bei der implementierung einfacher.

Zitat:
Der Inner Join nimmt ja auch leider eine ziemliche Abarbeitungszeit in Anspruch.
Wieviele Datensätze haben denn die Tables?
Vermeide wo es geht alles zu ziehen, benutze z.B. eine WHERE - Klausel, und ein SELECT * benötigt auch sehr viel Zeit.
Hier mal ein Link, ich bin heute Schreibfaul.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 14.03.08, 17:12   #5 (permalink)
Member of Honour
 
Registriert seit: 02.10.01
Indi Leistung: Z3
Likes: 0
Standard

Zitat:
Naja, bei diesem DB Design ist es möglich, dass in der tbl_gruppe_zwischen folgendes auftreten kann:

id - tbl_user_ID - tbl_gruppe_ID
1 - 1 - 2
2 - 1 - 2
3 - 1 - 2
Einfach die user_id mit der gruppen_id unique setzen und das Problem ist gelöst. Die id-Spalte ist trotzdem sinnlos, weil du sie einfach nicht brauchen wirst.
Indi ist offline   Mit Zitat antworten
Alt 14.03.08, 17:45   #6 (permalink)
Themenstarter
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Indi
Einfach die user_id mit der gruppen_id unique setzen und das Problem ist gelöst. Die id-Spalte ist trotzdem sinnlos, weil du sie einfach nicht brauchen wirst.
Wie setze ich denn die user_ID & gruppen_ID unique

Mit phpmyadmin sieht es im moment so aus (siehe Anhang).

Reicht das, weil du meintest ja user_id mit gruppen_id unique setzen?

Geändert von weau (17.03.11 um 15:04 Uhr)
weau ist offline   Mit Zitat antworten
Alt 14.03.08, 19:41   #7 (permalink)
Member of Honour
 
Registriert seit: 02.10.01
Indi Leistung: Z3
Likes: 0
Standard

Bei phpmyadmin unter Struktur "Index über [2] Spalten anlegen", die zwei Spalten auswählen und bei Indextyp "Unique" wählen. Das verhindert eben, dass bei gleichen Werten der user_id bzw. gruppen_id ein neuer Datensatz angelegt wird. Gegebenenfalls die MySQL-Docu lesen.
Indi ist offline   Mit Zitat antworten
Alt 15.03.08, 01:04   #8 (permalink)
Themenstarter
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Danke!
weau ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » SQL Inner Join Problem
Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[SQL] Update mit JOIN Thunderb0lt Code Kitchen 12 09.02.10 13:02
2 Tabellen mit JOIN zu einer Tabelle verknüpfen moveax1 (Web-) Design und webbasierte Sprachen 5 06.08.08 22:53
Mysql Inner join problem weau (Web-) Design und webbasierte Sprachen 4 17.03.07 12:05
Join CPU8080 (Web-) Design und webbasierte Sprachen 6 06.02.06 21:19
!!Problem!! Brauch Mal Hilfe !! 16-bit-ms-dos teilsystem. !!Problem!! nonpretium Windows 0 24.10.05 20:56


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61