PDA

View Full Version : MySQL upit


gagis
25.07.2013., 19:55
Imam jednu MySQL tablicu (http:/www.knjizica.com/5a87cf6ce/tablica.gif) "ponude"u kojoj se upisuju id_korisnici, id_predmet, ponuda, vrijeme_postavljanja i sada trebam napraviti upit koji će mi ispisati id (autonumber) i id_predmet od korisnika koji ima svoj id=6 , pod uvjetom da taj korisnik ima najveću ponudu.
Trebalo bi mi dati rezultat:
id=21 i id_predmet=47,
id=5 i id_predmet=60
id=26 i id_predmet=100
što je označeno u tablici, ali mi daje slijedeći rezultat koji je netočan :

id=7 i id_predmet=46,
id=18 i id_predmet=47,
id=5 i id_predmet=60,
id=15 i id_predmet=100.

Moj upit izgleda ovako:

$r = mysql_query("SELECT id, id_predmet,id_korisnik,vrijeme_postavljanja, ponuda_pp, MAX(ponuda)
FROM ponude
WHERE id_korisnik=6
GROUP BY id_predmet
HAVING (SELECT id_predmet FROM ponude HAVING MAX(ponuda)>=ponuda)
") or die(mysql_error());


Pokušao sam sa nekoliko podupita u ovom HAVING_u, ali mi nikako ne prikaže kako treba. Pa bih molio ako tko može pomoći.

fatalista
26.07.2013., 11:30
kad bi kuzio pitanje bi i pomogo, evo citao bar 5x al sam preglup da shvatim jer naime nigdje ne vidim id 6 nit u onom kak bi trebalo bit nit kak daje... mozda netko shvati, ako ne shvati preformuliraj pitanje pa cu pomoc.

Edit: osim po upitu vidim da trazis onog koji ima id6 ako i samo ako ima najvecu ponudu? neznam...

gagis
26.07.2013., 13:33
kad bi kuzio pitanje bi i pomogo, evo citao bar 5x al sam preglup da shvatim jer naime nigdje ne vidim id 6 nit u onom kak bi trebalo bit nit kak daje... mozda netko shvati, ako ne shvati preformuliraj pitanje pa cu pomoc.

Edit: osim po upitu vidim da trazis onog koji ima id6 ako i samo ako ima najvecu ponudu? neznam...

Zahvaljujem na trudu.:p
Sorry, krivo sam napisao ovaj "id=6", znači treba biti ovako:

Imam jednu MySQL tablicu "ponude (http://www.knjizica.com/5a87cf6ce/tablica.gif)"u kojoj se upisuju id_korisnici, id_predmet, ponuda, vrijeme_postavljanja i sada trebam napraviti upit koji će mi ispisati id (autonumber) i id_predmet od korisnika koji ima svoj id_korisnik=6 , pod uvjetom da taj korisnik ima najveću ponudu, tj. upravo ovo što si pod Edit napisao.

Objašnjenje (ako pomogne): :rolleyes:

Ovaj korisnik id_korisnik=6 ima (gledajući po ovoj tablici na linku, jer ne mogu postaviti direktno sliku) ukupno zadanih 7 ponuda koje mogu ispisati bez komandi GROUP BY i HAVING, ali ja želim da mi ispiše samo one redove kojima je ovaj id_korisnik=6 za određeni predmet ponudio najveću cijenu. Ta 3 reda su označena u tablici.

Namelles
27.07.2013., 08:19
SELECT * FROM ponude WHERE id_korisnik=6 ORDER BY ponuda DESC LIMIT 1;

josipmo
27.07.2013., 09:22
$e = mysql_query("SELECT * FROM tabela t1 WHERE id_korisnik=6
AND EXISTS(SELECT * FROM tabela t2
WHERE t2.ponuda>=t1.ponuda
GROUP BY id_predmet
HAVING COUNT(id_predmet) = 1)
GROUP BY id_predmet");
while($row = mysql_fetch_array($e)){
echo $row[0], ' | ', $row[1], ' | ', $row[2], ' | ', $row[3], '<br />';
};

gagis
28.07.2013., 14:52
SELECT * FROM ponude WHERE id_korisnik=6 ORDER BY ponuda DESC LIMIT 1;

Ovim upitom ispisuje samo najveću ponudu korisnika "id_korisnik=6" od toga predmeta, ali treba ispisati za sve one predmete za koje je "id_korisnik=6" ponudio najveću cijenu.
Ty :)

gagis
28.07.2013., 15:12
(josipmo)
Ovaj upit ispisuje isti rezultat kao onaj moj gore navedeni, ispisuje predmete:

id_predmet=46,
id_predmet=47,
id_predmet=60,
id_predmet=100.

a treba ispisati samo
id_predmet=47,
id_predmet=60,
id_predmet=100.

jer za "id_predmet=46" je dao najveću ponudu "id_korisnik=5" od "39.00" kn, dok je "id_korisnik=6" za "id_predmet=46" dao najveću ponudu od "37.00" kn, što se vidi u tablici.
Ty za trud. :rolleyes: