Pagina 1 di 1

[RISOLTO]Problema incrocio query mysql

Inviato: giovedì 4 maggio 2017, 0:05
da Chry1991
Salve amici

ho un problema, ho dovuto ritoccare una tabella sql perchè mi risultava pesante nella mole dei dati.

Quindi avendo una relazione n ad n ho dovuto creare una tabella d'appoggio.

le tabelle incrociate sono queste

Codice: Seleziona tutto

Tabella Users
id_user
username
email
password


tabella Clan
id_clan
descrizione
trofei


tabella user_clan
id
id_clan
id_user
ruolo


ora dovrei prendere delle info da user, ma devo restituire anche il clan di appartenenza.
Sarà la stanchezza ma ho scritto la query cosi e non va:

Codice: Seleziona tutto

SELECT guesswho.users.id_user, guesswho.users.username, guesswho.users.trofei, guesswho.users.position,
GUESSWHO.CLAN.CLAN_NAME
FROM guesswho.Users 
					INNER JOIN CLAN_USERS ON CLAN_USERS.ID_USER = USERS.ID_USER
                    INNER JOIN CLAN ON CLAN.ID_CLAN = CLAN_USERS.ID_CLAN
					where guesswho.users.position = 'ITALY' 
					order by trofei desc limit 100
                    
                    

cosa ho sbagliato d preciso?? mi restituisce 0 record

Mi scuso per l'orario, probabilmente la stanchezza mi ha fatto toppare qualcosa

:)

grazie a tutti per l'aiuto

Re: Problema incrocio query mysql

Inviato: giovedì 4 maggio 2017, 7:21
da Zoff
perché nelle join non usi il nome dello schema come in tutti gli altri punti?

Re: Problema incrocio query mysql

Inviato: giovedì 4 maggio 2017, 9:03
da Chry1991

perche ho scritto nella fretta, dici che può essere quello??

perchè anche rifacendola cosi restituisce sempre 0 record

Codice: Seleziona tutto

SELECT guesswho.users.id_user, guesswho.users.username, guesswho.users.trofei, guesswho.users.position,
GUESSWHO.CLAN.CLAN_NAME
FROM guesswho.Users
               Inner JOIN guesswho.CLAN_USERS ON guesswho.CLAN_USERS.ID_USER = guesswho.USERS.ID_USER
                    inner JOIN guesswho.CLAN ON guesswho.CLAN.ID_CLAN = guesswho.CLAN_USERS.ID_CLAN
               where guesswho.users.position = 'ITALY'
               order by guesswho.users.trofei desc limit 100

Re: Problema incrocio query mysql

Inviato: giovedì 4 maggio 2017, 9:07
da Zoff
teoricamente no, ma alcuni dbms sono un po' "schizzinosi".

Più che altro sei sicuro che ci siano le tuple che ti aspetti? Se vuoi avere anche gli utenti senza clan dovresti usare delle LEFT join, tipo:

Codice: Seleziona tutto

SELECT guesswho.users.id_user, guesswho.users.username, guesswho.users.trofei, guesswho.users.position,
GUESSWHO.CLAN.CLAN_NAME
FROM guesswho.Users
               LEFT JOIN CLAN_USERS ON CLAN_USERS.ID_USER = USERS.ID_USER
                    LEFT JOIN CLAN ON CLAN.ID_CLAN = CLAN_USERS.ID_CLAN
               where guesswho.users.position = 'ITALY'
               order by trofei desc limit 100
Altrimenti trovi solo gli utenti che appaiono in clan_users

Re: Problema incrocio query mysql

Inviato: giovedì 4 maggio 2017, 9:14
da Chry1991
Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4979135#p4979135][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:teoricamente no, ma alcuni dbms sono un po' "schizzinosi".

Più che altro sei sicuro che ci siano le tuple che ti aspetti? Se vuoi avere anche gli utenti senza clan dovresti usare delle LEFT join, tipo:

Codice: Seleziona tutto

SELECT guesswho.users.id_user, guesswho.users.username, guesswho.users.trofei, guesswho.users.position,
GUESSWHO.CLAN.CLAN_NAME
FROM guesswho.Users
               LEFT JOIN CLAN_USERS ON CLAN_USERS.ID_USER = USERS.ID_USER
                    LEFT JOIN CLAN ON CLAN.ID_CLAN = CLAN_USERS.ID_CLAN
               where guesswho.users.position = 'ITALY'
               order by trofei desc limit 100
Altrimenti trovi solo gli utenti che appaiono in clan_users

Grazie mille zoff funziona :)