Web development Programiranje, dizajn, hosting i sve ostalo vezano uz razvoj web siteova |
|
25.07.2013., 20:55
|
#1
|
Registrirani korisnik
Registracija: Jul 2010.
Postova: 36
|
MySQL upit
Imam jednu MySQL tablicu "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.
|
|
|
26.07.2013., 12:30
|
#2
|
Registrirani korisnik
Registracija: Aug 2012.
Postova: 227
|
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...
|
|
|
26.07.2013., 14:33
|
#3
|
Registrirani korisnik
Registracija: Jul 2010.
Postova: 36
|
Quote:
fatalista kaže:
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.
Sorry, krivo sam napisao ovaj "id=6", znači treba biti ovako:
Imam jednu MySQL tablicu " 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_korisnik=6 , pod uvjetom da taj korisnik ima najveću ponudu, tj. upravo ovo što si pod Edit napisao.
Objašnjenje (ako pomogne):
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.
|
|
|
27.07.2013., 09:19
|
#4
|
Registrirani korisnik
Registracija: Aug 2010.
Postova: 308
|
SELECT * FROM ponude WHERE id_korisnik=6 ORDER BY ponuda DESC LIMIT 1;
|
|
|
27.07.2013., 10:22
|
#5
|
Registrirani korisnik
Registracija: Jan 2010.
Lokacija: Split
Postova: 333
|
PHP Code:
$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 />';
};
Zadnje uređivanje josipmo : 27.07.2013. at 10:28.
|
|
|
28.07.2013., 15:52
|
#6
|
Registrirani korisnik
Registracija: Jul 2010.
Postova: 36
|
Quote:
Namelles kaže:
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
|
|
|
28.07.2013., 16:12
|
#7
|
Registrirani korisnik
Registracija: Jul 2010.
Postova: 36
|
(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.
|
|
|
|
Tematski alati |
|
Opcije prikaza |
Linearni mod
|
Sva vremena su GMT +2. Trenutno vrijeme je: 13:19.
|
|
|
|