Forum.hr

Natrag   Forum.hr > Informatička tehnologija > Internet > Web development
Korisničko ime
Lozinka

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

Odgovor
 
Tematski alati Opcije prikaza
Old 25.07.2013., 19:55   #1
gagis
Registrirani korisnik
 
Registracija: Jul 2010.
Postova: 39
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., 11:30   #2
fatalista
Registrirani korisnik
 
Registracija: Aug 2012.
Postova: 198
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., 13:33   #3
gagis
Registrirani korisnik
 
Registracija: Jul 2010.
Postova: 39
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., 08:19   #4
Namelles
Registrirani korisnik
 
Registracija: Aug 2010.
Postova: 309
SELECT * FROM ponude WHERE id_korisnik=6 ORDER BY ponuda DESC LIMIT 1;
Namelles is offline  
Odgovori s citatom
Sponsored links
Advertisement
 
Advertisement
Old 27.07.2013., 09:22   #5
josipmo
Registrirani korisnik
 
Registracija: Jan 2010.
Lokacija: Split
Postova: 345
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 09:28.
josipmo is offline  
Odgovori s citatom
Old 28.07.2013., 14:52   #6
gagis
Registrirani korisnik
 
Registracija: Jul 2010.
Postova: 39
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., 15:12   #7
gagis
Registrirani korisnik
 
Registracija: Jul 2010.
Postova: 39
(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
Sponsored links
Advertisement
 
Advertisement
Odgovor


Tematski alati
Opcije prikaza

Pravila postanja
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smajlići su On
[IMG] kôd je Off
HTML kôd je Off

Kreni na podforum




Sva vremena su GMT +1. Trenutno vrijeme je: 13:00.



Powered by vBulletin Version 3.8.4 (hrvatski)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Site content ©1999-2014 Forum.hr
Ad Management by RedTyger