|
|
|
|
Strumenti |
13-03-2010, 18:20 | #1 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
Comando SQL
Ciao!
ho un piccolo problema con il mio database, ho 2 tabelle con cui dover collegare per cercare ad esempio, il mio nome, l'id, l'oggetto e l'id dell'oggetto nella tabella player si trova: Nome ed id nella tabella item si trova: l'oggetto e l'id dell'oggetto. io uso: select name, player.id, oggetto, id_oggetto from player, item where name = 'Mario'; vado ad avviare la query e mi trovo tutte le persone che sono nel database con il nome mario... ma che anche se si chiama ad esempio: 'Giuseppe' mi trovo che questa persona si chiama mario Qualcuno sa dirmi come fare? ps. ho messo player.id perchè anche nell'altra tabella si trova id e quindi ho specificato quale prendere. |
13-03-2010, 18:24 | #2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2760
|
Non c'è una relazione tra le due tabelle? Probabilmente hai interpretato male il risultato della query che così come è scritta dovrebbe fare il prodotto cartesiano tra tutte le tuple con nome Mario della prima tabella e tutte le tuple della seconda.
|
13-03-2010, 18:56 | #3 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
io devo fare una query dove io cerco la persona mario,
e dovrebbe dirmi tutti gli oggetti che usa. in questo caso ho usato: select name, player.id, vnum, window from player,item where name = 'mario'; ho provato anche così: select name, player.id, vnum, window from player,item where name = 'mario' and vnum = 12609; vnum sarebbe l'id dell'oggetto per specificare di trovare mario e se ha quest'oggetto. così mi trova soltando quel tipo di oggetto specificato ma che usa non solo mario ma anche gli altri e che gli altri vengono visualizzato con il nome mario. invece dovrebbe uscire soltando mario con quell'oggetto. |
13-03-2010, 19:16 | #4 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
visto che hai piu tabelle credo che dovresti usare JOIN per estrarre i dati
qualcosa tipo: SELECT * FROM tabella_1 LEFT JOIN tabella_2 ON tabella_1.id = tabella_2.id WHERE tabella_1.nome = 'mario';
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
13-03-2010, 19:31 | #5 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
ho provato con il left join in questo modo:
select name, player.id, item.vnum, item.window from player left join item on player.id = item.id where name = 'mario'; mi trova soltando l'utente mario ma nei campi degli oggetti e id oggetto esce null. |
13-03-2010, 20:34 | #6 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
SELECT *
FROM player, item where player.id=item.id and player.name='mario';
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
13-03-2010, 20:52 | #7 |
Member
Iscritto dal: Jan 2010
Messaggi: 149
|
Fatto grazie
l'errore era che facevo il left join: select name, player.id, item.vnum, item.window from player left join item on player.id = item.id where name = 'mario'; e l'errore era tra player.id = item.id visto che non erano uguali ho risolto mettendo player.id = item.vnum mi ero dimenticato che l'id della tabella item fa riferimento ad un'altro tipo di valore Grazie per l'aiuto! |
14-03-2010, 10:02 | #8 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
cmq l'errore nn era il left join....ma il campo.
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] Ultima modifica di zuper : 14-03-2010 alle 10:09. |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:13.