Tabellen verknüpfen
Simon
- php
0 Tobias Kloth0 falke0 Kalle_Worms0 Simon
Hallo,
ich finde keine passenden Suchworte fürs Archiv bzw. weiß daher auch nicht ob es schon mal angesprochen wurde.
Ich möchte folgende Inhalte bei der SELECT-Abfrage verknüpfen:
Tabelle cms_user:
id (Primärschlüssel)
status
username
userpass
usertask
Tabelle cms_usertask:
id (Primärschlüssel)
description
Nun steht z. B. folgendes in den Tabellen:
cms_user
id = 1; status = 1; username = root; userpass = ROOT; usertask = 2
id = 1; status = 1; username = user1; userpass = USER1; usertask = 1
cms_usertask
id = 1; description = SITE_VIEWER
id = 2; description = SITE_ADMIN
Die Ausgabe soll dann so aussehen:
USERNAME = root; AUFGABE = SITE_ADMIN
USERNAME = user1; AUFGABE = SITE_VIEWER
Wie bewerkstellige ich jetzt diese Verknüpfung bei der SELECT-Abfrage. Irgendwie bekomme ich das mit dem JOIN nicht hin.
Gruß .. Simon
Hallo Simon,
cms_user
id = 1; status = 1; username = root; userpass = ROOT; usertask = 2
id = 1; status = 1; username = user1; userpass = USER1; usertask = 1
in der unteren Zeile ist id=2 (bzw. id!=1), oder?
Die Ausgabe soll dann so aussehen:
USERNAME = root; AUFGABE = SITE_ADMIN
USERNAME = user1; AUFGABE = SITE_VIEWER
vielleicht:
SELECT u.username, ut.description as aufgabe
FROM cms_user as u, cms_usertask as ut
WHERE u.usertask = ut.id
?
Grüße aus Nürnberg
Tobias
hallo
kannst du mal deinen join herschreiben.
select username,aufgabe from tabelle1,tabelle2 where tabelle1.id = tabelle2.id;
mfg falke
ansonsten http://dev.mysql.com/doc/mysql/de/join.html
Hallo,
kannst du mal deinen join herschreiben.
mysql_query('SELECT user.*, usertask.* FROM cms_user AS user, cms_usertask AS usertask JOIN user ON user.usertask = usertask.description WHERE user.status = 1');
select username,aufgabe from tabelle1,tabelle2 where tabelle1.id = tabelle2.id;
Nee da gibt er ja nur aus was in der Tabelle steht. Ich will ja aber die Beschreibung (also description) und nicht die Nummer haben.
Verstehst?
Gruß .. Simon
Hallo,
ich hab das jetzt so gemacht, er gibt jetzt auch das aus. Außer die Beschreibung in Worten und nicht die Zahl
mysql_query('SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.description WHERE user.status = 1');
Gruß .. Simon
Hallo,
du hast den Primärschlüssel in der Datenbank nicht richtig definiert, das Feld id sollte unique sein. Oder ist das nur ein Tippfehler?
cms_user
id = 1; status = 1; username = root; userpass = ROOT; usertask = 2
id = 1; status = 1; username = user1; userpass = USER1; usertask = 1
Bitte kläre das, weil du so keine Verbindung zwischen den Tabellen bekommen KANNST.
Kalle
Hallo,
du hast den Primärschlüssel in der Datenbank nicht richtig definiert, das Feld id sollte unique sein. Oder ist das nur ein Tippfehler?
Nee Du hattest Recht!
Die Indizes von cms_user sehen jetzt so aus:
Name; Typ; Kardinalität; Feld
PRIMARY; PRIMARY; id
id; UNIQUE; id
Ist das so richtig?! - Wobei ich aber glaube ich von der Datenbank her nicht die Tabellen automatisch verknüpfen darf. Diese Aktion ist abgechlatet.
Gruß .. Simon