Informatie uit andere table

Gestart doorTimkb7 reacties29 weergaven

8 berichten · pagina 1 van 1

Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Voor een login systeem werk ik met sessies, nu zou ik graag willen dat een query controleert of de gebruiker niet verbannen is aan de hand van een gebruikers ID in de sessie table maar de informatie of de gebruiker verbannen is staat in de gebruikers table.

De sessie tabel bevat het veld UserID, dat UserID staat als id in de table gebruikers en het veld permissions moet 1 zijn dan is de gebruiker niet verbannen.

Als ik ergens niks van snap is het wel twee tables in een query betrekken. Zou iemand mij hierbij kunnen helpen. Ik weet dat dit ook met twee querys kan maar ik zou graag willen leren aan de hand van een voorbeeld hoe dit in een query kan.
0
Berichten
15.446
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
ongeveer zo:

SELECT
a.UserID,
b.id
FROM
sessietable a,
gebruikerstable b
WHERE
a.UserID=b.id
AND
UserID = " . mysql_real_escape_string($_SESSION[blabla]) . "

oja en dan de permission er ook in verwerken
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bedankt, ik ga er eens mee aan de slag en kijken of het lukt. Dit klinkt wel logisch voor mij.

toevoeging op 9 december 2012, 12:30:19:
Oke, toch niet dus schater.

Hoe select ik nu dan het record van b.id wat overeen moet komen met a.UserID en b.permissions 1 moet zijn.

Eigenlijk een select in select die kijkt of de select die in de select zit 1 record terug geeft of 0.
0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Marjolein schreef:
ongeveer zo:

SELECT
a.UserID,
b.id
FROM
sessietable a,
gebruikerstable b
WHERE
a.UserID=b.id
AND
UserID = " . mysql_real_escape_string($_SESSION[blabla]) . "

oja en dan de permission er ook in verwerken
Doe je beter als volgt.

SELECT
a.UserID,
b.id
FROM
sessietable a LEFTJOIN gebruikerstable b
ON a.userID = b.id
WHERE
UserID = " . mysql_real_escape_string($_SESSION[blabla]) . "

Nu haal je alleen de rijen die matchen met het veld ID uit de linker tabel, als er geen match is wordt er uit de rechter tabel geen rijen samegevoegd.

Op de eerder gegeven manier zou je de 2 tabellen volledig inlezen, en dan pas filteren met een WHERE-clause. Wat dus zware belasting is.

Waarom ?

Een Database Engine zoekt altijd eerst naar de FROM-clause, wat logisch is want je kan nooit eerst filteren op iets wat je nog niet hebt. Dan pas word WHERE toegepast, en dan pas SELECT.

toevoeging op 9 december 2012, 12:40:46:
Timmie schreef:
Bedankt, ik ga er eens mee aan de slag en kijken of het lukt. Dit klinkt wel logisch voor mij.
toevoeging op 9 december 2012, 12:30:19:
Oke, toch niet dus schater.

Hoe select ik nu dan het record van b.id wat overeen moet komen met a.UserID en b.permissions 1 moet zijn.

Eigenlijk een select in select die kijkt of de select die in de select zit 1 record terug geeft of 0.

SELECT a.UserID, b.id
FROM 
         gebruikerstable AS a LEFT JOIN permissionstable AS b
         ON gebruikerstable.UserID = permissionstable.id
WHERE 
         a.UserID = " . mysql_real_escape_string($_SESSION[blabla]) . "
            AND
         b.permissions = 1
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Exact wat ik zocht! Eens kijken of het werkt.

Als ik nu vervolgens via mysql_fetch_assoc gegevens ophaal moet ik dan ook bijv $row[b.id] gebruiken of raak ik die functionaliteit dan kwijt?
0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Timmie schreef:
Exact wat ik zocht! Eens kijken of het werkt.

Als ik nu vervolgens via mysql_fetch_assoc gegevens ophaal moet ik dan ook bijv $row[b.id] gebruiken of raak ik die functionaliteit dan kwijt?
Nee, je kan gewoon $row[id] gebruiken winkZolang je WHERE-clause geen dubbele veldnamen resulteert is t goed.

Maar dan zou je toch een error krijgen etc yummie
toevoeging op 9 december 2012, 12:46:43:
Laat het weten als het niet/wel werkt.
Want eerlijk gezegd ben ik net op, nog geen volledige tas koffie op yummie
Dus mn hoofd is nog niet 100% atm xD
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het werkt perfect, bedankt wink
Oh, gebruikerstable.UserID = permissionstable.id moest a.UserID = b.id zijn.
0
Berichten
308
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Timmie schreef:
Het werkt perfect, bedankt wink
Oh, gebruikerstable.UserID = permissionstable.id moest a.UserID = b.id zijn.
Mooi fijn dat het werkt, en je hebt zelf mn fout verbeterd ^^

Hehe ja, komt omdat ik nooit met aliases werk yummieIk weet het ... Dat zou moeten dan komt je query overzichtelijker blabla yummie
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren