Autor Zpráva
hulk
Profil *
Dobrý den,

dělám si takovej malej přehled. Mám dvě tabulky a to aukce a výherce. Problém mám, že potřebuju aby vyhodil výsledky pouze nejvyšší ceny (prihozy). Už jsem byl tak zoufalej, že jsem se chtěl podívat co to udělá, když dám ASC, ale to mi vyhazuje jen chybu: Warning: mysql_result() expects parameter 1 to be resource, boolean given

Ví někdo jak to mám správně zapsat? Jde mi o to, že potřebuju aby se splnila podmínka pro výpis a potom vypsal jen záznamy co mají nejvyšší příhoz a ty co mají nižší, tak aby je ignoroval.

$vyhry = mysql_result(mysql_query("SELECT COUNT(us.id) FROM aukce us LEFT JOIN aukce_prihozy uz ON us.id = uz.id_user WHERE us.objednavky_pocet > '0' AND us.ukonceni < now() ORDER BY uz.prihozy ASC"),0);Děkuju, snad mi někdo pomůže
Taps
Profil
hulk:
pokud používáš agregační funkce tak by mělo následovat i GROUP, zkus níže uvedené
SELECT MAX(cena) as nejvyssi_cena
FROM aukce us 
LEFT JOIN aukce_prihozy uz 
ON us.id = uz.id_user 
WHERE us.objednavky_pocet > '0' 
AND us.ukonceni < now() 
GROUP BY us.id 
ORDER BY uz.prihozy DESC 
viz také Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení řádků s maximální (minimální) hodnotou
hulk
Profil *
INSERT INTO `aukce` (`id`, `id_user`, `nazev`, `cena`, `min_prihoz`, `text`, `ukonceni`, `objednavky_pocet`, `datum_vlozeni`) VALUES
(1, 19, 'Texas', '100.00', '1.00', 'test', '2013-12-25 08:16:21', 16, '2013-12-25 07:50:54')


INSERT INTO `aukce_prihozy` (`id`, `id_user`, `id_zbozi`, `kupujici`, `prihoz`, `nabidka`, `kolik`, `datum`) VALUES
(1, 19, 1, 19, '114.00', '1.00', '8.00', '2013-12-25 08:15:54'),
(2, 19, 1, 10, '115.00', '1.00', '8.00', '2013-12-25 08:20:19');



Tohle bohužel také nefunguje.
$vase_vyhry = mysql_result(mysql_query("SELECT MAX(uz.prihozy) as nejvyssi cena
FROM aukce us 
LEFT JOIN aukce_prihozy uz 
ON us.id = uz.id_user 
WHERE us.objednavky_pocet > '0' 
AND us.ukonceni < now() 
GROUP BY us.id 
ORDER BY uz.prihozy ASC"),0);//Tenhle řádek se mu nelíbí (mysql_result() expects parameter 1 to be resource, boolean given)



Řádek číslo 8
Alphard
Profil
A mysql_error() hláška?
hulk
Profil *
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cena FROM aukce us LEFT JOIN aukce_prihozy uz ON us.id = uz.id_user WHERE us.' at line 1
Alphard
Profil
V aliasu nesmí být mezera, že jsem si toho hned nevšiml :-)
hulk
Profil *
V jakém aliasu?


Taky jsem už pochopil kde :-)
Teď mi to píše: Unknown column 'uz.prihozy' in 'field list'


Aktuálně mám teď dotaz postavený takhle:
mysql_result(mysql_query("SELECT MAX(uz.prihozy) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_user 
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() 
            GROUP BY us.id 
            ORDER BY nejvyssi_cena ASC"),0);
S chybovou hláškou: Unknown column 'uz.prihozy' in 'field list'
Taps
Profil
hulk:
mysql_result(mysql_query("SELECT MAX(uz.prihoz) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_user 
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() 
            GROUP BY us.id 
            ORDER BY nejvyssi_cena ASC"),0);
hulk
Profil *
Chyba vyřešena. Měl jsem tam prihozy, ale v tabulce mám prihoz. Takovej velkej přehmat. Ted to nevypisuje žádnou chybu, ale zároveň ani žádné výsledky.


Děkuju. Jsme se minuli a teď vypadám, že jen dělám chytrýho nad Vašema radama. Tohle byla skutečně chyba, ale teď mi nevypisuje nic. Chyba žádná a výsledek taky ne.


Když max zaměním za count, tak už to vypisuje, ale všude jen nuly.


Teď to mám takhle a jen nuly. Víte prosím proč?

  $vase_vyhry = mysql_query("SELECT MAX(uz.prihoz) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.kupujici 
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() AND uz.kupujici ='".$vys["id"]."'
            GROUP BY us.id 
            ORDER BY nejvyssi_cena ASC");
            $vase_vyhry = mysql_num_rows($vase_vyhry);



Teď to mám takhle a na nic lepšího asi nepřijdu. Podle zdravého rozumu a snad ho ještě mám by to mělo makat.

  $vase_vyhry = mysql_query("SELECT MAX(uz.prihoz) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_user 
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() AND uz.kupujici='".$vys["id"]."'
            GROUP BY us.id 
            ORDER BY nejvyssi_cena ASC");
            $vase_vyhry = mysql_num_rows($vase_vyhry);



Jsem blb. Daval jsem špatnou podmínku. Teď mi to konečně vypisuje počet nalezených, ale oba dražitelé mají, že vyhráli. Nějak mi nejde udělat aby to ukázalo jen tomu co ma vyšší příhoz.
  $vase_vyhry = mysql_query("SELECT MAX(uz.prihoz) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_zbozi 
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() AND uz.kupujici='".$vys["id"]."'
            GROUP BY us.id 
            ORDER BY nejvyssi_cena ASC");
            $vase_vyhry = mysql_num_rows($vase_vyhry);



Už to začínám chápat, ale asi je nemožný tam doplnit podmínku, která řekne, že někdo jiný přihodil víc, tak to nezapočítá. Ze zoufalství jsem tam napsal tohle: AND uz.prihoz > prihoz
Což je jasná kravina, tak jsem to ani netestnul. Hned po napsání mi došlo, že to fungovat nemůže.
hulk
Profil *
Už jsem to vyřešil. Ten join je nářez :-)
Děkuju


$vase_vyhry = mysql_result(mysql_query("SELECT COUNT(*) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_zbozi
      RIGHT JOIN aukce_prihozy d 
        ON d.prihoz < uz.prihoz
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() AND uz.kupujici='".$vys["id"]."'"),0);
Tak jsem to předčasně oslavil. Ten right join sice vyřešil problém, ale dělá tam jinou neplechu.


Takhle mi to funguje super:
  $vase_vyhry = mysql_result(mysql_query("SELECT COUNT(*) as nejvyssi_cena
    FROM aukce us 
      LEFT JOIN aukce_prihozy uz 
        ON us.id = uz.id_zbozi
          WHERE us.objednavky_pocet > '0' 
          AND us.ukonceni < now() AND uz.prihoz > 114 AND uz.kupujici='".$vys["id"]."'"),0);
Na zkoušku jsem tam dal cifru, kterou potřebuju prekonat. protože poslední příhoz byl na 115. Ví někdo jak to udělat do pohybu? Vím, že tohle není žádná sranda, ale snad překážky jsou taky fajn, ne?
hulk
Profil *
Nic, už to mám funkční. Děkuji za váš čas

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: