PDA

View Full Version : [query]come faccio?


The Incredible
23-07-2007, 11:14
ho 3 tabelle:

utente
-id
-username
....


vendita(oggetto)
idutente
.....


offre
idutente
...

vorrei selezionare per ogni oggetto/vendita

idoggetto con id e username acquirente e id user venditore

spero di essermi spiegato..ci sto ragionando ma non sono arrivato alla soluzione.

select oggetto.id, utente.id,utente.username from oggetto join utente on oggetto.id_utente=utente.id

con questa mi trovo una parte cioè..idoggetto e id e user del venditore..ora vorrei affiancarci i dati presi e collegati da offre..

The Incredible
23-07-2007, 11:15
in pratica c'è la tabella utente..

un utente mette in vendita un oggetto..quindi tabella oggetto/vendita..
un altro venditore fa un offerta per quell'oggetto..quindi tabella offre..
per ogni oggetto voglio sapere chi ha fatto un offerta e chi sta vendendo..

Pro7on
23-07-2007, 11:50
in pratica c'è la tabella utente..

un utente mette in vendita un oggetto..quindi tabella oggetto/vendita..
un altro venditore fa un offerta per quell'oggetto..quindi tabella offre..
per ogni oggetto voglio sapere chi ha fatto un offerta e chi sta vendendo..



secondo me ti conviene inserire una nuova tabella
es: Traslazioni:
-id_traslazione
-id_Utente
-id_oggetto

cionci
23-07-2007, 14:19
secondo me ti conviene inserire una nuova tabella
es: Traslazioni:
-id_traslazione
Mmmmhhh...a che serve ?

cionci
23-07-2007, 14:20
con questa mi trovo una parte cioè..idoggetto e id e user del venditore..ora vorrei affiancarci i dati presi e collegati da offre..
Niente ti vieta di fare un'altra query...

The Incredible
23-07-2007, 14:21
ho risolto:

SELECT o. * , AS max, u.id AS id_offerente, u.username AS n_offerente, j.id_utente AS id_offerente, t.username
FROM utente u, oggetto o, offre j, utente t
WHERE u.id = o.id_utente
AND j.id_oggetto = o.id
AND t.id = j.id_utente
GROUP BY o.id

The Incredible
23-07-2007, 14:21
Niente ti vieta di fare un'altra query...

lo sò..ma volevo farne una sola per la pulizia ed efficienza codice..risolto.

cionci
23-07-2007, 14:31
lo sò..ma volevo farne una sola per la pulizia ed efficienza codice..risolto.
Non mi sembra assolutamente più pulito...anzi ;)

The Incredible
23-07-2007, 14:31
Non mi sembra assolutamente più pulito...anzi ;)

quindi dici che è meglio farne due invece di come ne ho fatta una? :)

cionci
23-07-2007, 14:33
quindi dici che è meglio farne due invece di come ne ho fatta una? :)
Credo proprio di sì...
Tra l'altro nel risultato avresti anche informazioni ridondanti.

The Incredible
23-07-2007, 14:37
diciamo che le info ridondanti mi servono..infatti con questa query popola la pagina di visualizzazione oggetto e in + mi serve sapere il venditore username e l'acquirente e username

The Incredible
23-07-2007, 14:44
mi rimane un problema nella mia query..

quando non ci sono acquirenti quindi offerte non mi ritorna niente..

SELECT o. * , u.id AS id_venditore, u.username AS n_venditore, j.id_utente AS id_offerente, t.username as n_offerente
FROM utente u, oggetto o, offre j, utente t
WHERE u.id = o.id_utente
AND j.id_oggetto = o.id
AND t.id = j.id_utente
GROUP BY o.id

The Incredible
23-07-2007, 15:10
ecco le 3 query divise:

$sql=" SELECT oggetto. * , max( offre.max_offerta ) AS max,
FROM oggetto LEFT JOIN offre ON offre.id_oggetto = oggetto.id
where oggetto.id= '".$id_oggetto."'";

$sqlvenditore="select utente.username,utente.id
from utente join oggetto on oggetto.id_utente=utente.id
where oggetto.id= '".$id_oggetto."'";


$sqlacquirente="select utente.username,utente.id
from utente join offre on offre.id_utente=utente.id
where offre.id_oggetto= '".$id_oggetto."'";

ora mi piacerebbe riuscire tanto per provare a farne una unica con la stessa funzione