correttezza query

è corretta questa query?

SELECT username, email, u.bid, b.bid, avatar, u.lid, l.lid, lname, name, place, website, u.regdate, b.regdate

                  FROM users AS u JOIN bands AS b

                  ON u.bid=b.bid JOIN levels AS l ON u.lid=l.lid WHERE u.uid=%d"

echo $query ( dopo averla passata in sprintf per assegnare l'id al segnaposto)

mi produce

SELECT username, email, u.bid, b.bid, avatar, u.lid, l.lid, lname, name, place, website, u.regdate, b.regdate

                  FROM users AS u JOIN bands AS b

                  ON u.bid=b.bid JOIN levels AS l ON u.lid=l.lid WHERE u.uid=1"

non da errori :( e nemmeno record?

forse perchè solo la tabella utenti è piena o perchè non ho completato lo JOIN su tutte e 4 le tabelle?

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

devo unire i seguenti campi:

users ( bid , lid)

bands ( bid, locid)

levels ( lid )

locations (locid)

tra parentesi i campi in comune

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

La query mi sembra corretta. C'è almeno un record per ciascuna tabella collegato al record della tabella users?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si

users 2 record

location 2 record

bands 1 record

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Prova a lanciare la query un pezzo alla volta:

1) SELECT username, email, u.bid, b.bid, avatar, u.lid, l.lid, lname, name, place, website, u.regdate, b.regdate

                  FROM users AS u WHERE u.uid=1

2) SELECT username, email, u.bid, b.bid, avatar, u.lid, l.lid, lname, name, place, website, u.regdate, b.regdate

                  FROM users AS u JOIN bands AS b

                  ON u.bid=b.bid WHERE u.uid=1

3) SELECT username, email, u.bid, b.bid, avatar, u.lid, l.lid, lname, name, place, website, u.regdate, b.regdate

                  FROM users AS u JOIN bands AS b

                  ON u.bid=b.bid JOIN levels AS l ON u.lid=l.lid WHERE u.uid=1

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

hihihi mi sono appena accorto che come BID agli utenti assegnava 0 come default quando il BID dell'altra tabella ( il default ) è 1 lol

grazie mcq e scusami se ti ho fatto perdere tempo per questa mio dimenticanza

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Gianni ho questo problema :

ho joinato più tabelle ma ora in una c'è il campo LEADER che corrisponde all'ID di un utente ... solo che non corrisponde per forza all'id dell'utente mostrato quindi dovrebbe mostrare il nome collegato a quell'id senza che sia messo l'username di quell'utente nella clausola WHERE ( magari devo estrarre tutto poi? )

SELECT 
username,
email,
u.regdate,
u.bid,
b.bid AS bandid,
u.uid,
b.name,
b.bandleader AS leader, 
u.avatar,
s.mailing,
l.lid, 
l.lname, 
locs.pid , 
locs.name AS location,
locs.state, 
t.tagid, 
t.tagname AS type, 
b.music, 
u.lastaction

FROM users AS u 
JOIN levels AS l ON u.lid=l.lid 
JOIN bands AS b ON u.bid=b.bid
JOIN settings AS s ON uid=s.user 
JOIN locations AS locs ON b.place=locs.pid
JOIN tags AS t ON b.music=t.tagid WHERE uid=%d",

PS : hihihi hai visto ho imparato ad usare sprintf :D :2funny:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Devi fare una JOIN con la tabella user con la clausola ON che lega b.bandleader all'id dell'utente

Esempio. Supponi di avere la seguente tabella:

CREATE TABLE `user` (
          `id` int(11) NOT NULL auto_increment,
          `nome` varchar(123) default NULL,
          `id_padre` int(11) default NULL,
          PRIMARY KEY  (`id`)
)

Per ricavare i nomi dei figli e dei padri:

SELECT u.nome nome_figlio, p.nome nome_padre FROM user u JOIN user p ON u.id_padre = p.id

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
modificato 10 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda