Natrag   Forum.hr > Informatička tehnologija > Internet > Web development

Web development Programiranje, dizajn, hosting i sve ostalo vezano uz razvoj web siteova

Odgovor
 
Tematski alati Opcije prikaza
Old 25.07.2013., 20:55   #1
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.
gagis is offline  
Odgovori s citatom
Old 26.07.2013., 12:30   #2
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...
fatalista is offline  
Odgovori s citatom
Old 26.07.2013., 14:33   #3
Quote:
fatalista kaže: Pogledaj post
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.
gagis is offline  
Odgovori s citatom
Old 27.07.2013., 09:19   #4
SELECT * FROM ponude WHERE id_korisnik=6 ORDER BY ponuda DESC LIMIT 1;
Namelles is offline  
Odgovori s citatom
Old 27.07.2013., 10:22   #5
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.
josipmo is offline  
Odgovori s citatom
Old 28.07.2013., 15:52   #6
Quote:
Namelles kaže: Pogledaj post
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 is offline  
Odgovori s citatom
Old 28.07.2013., 16:12   #7
(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.
gagis is offline  
Odgovori s citatom
Odgovor


Tematski alati
Opcije prikaza

Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 06:05.