Autor Zpráva
stepanka
Profil *
Ahoj,

možná bude můj dotaz trochu primitivní, ale nemůžu k tomu nic najít.. Potřebovala bych dva sloupce typu INT od sebe odečíst. Jeden mínus druhý. Považovala jsem to za jednoduchou věc, ale dotaz vrací úplně nesmyslné čísla.

$result = mysql_query("SELECT IF(m.varianty_zapnute=1, CONCAT(m.$nazev,' - ',p.$nazev), m.$nazev) as nazev_produktu,
						
(p.kusu_skladem-p.minimalni_mnozstvi) AS rozdil
,
						p.kusu_skladem,
						p.minimalni_mnozstvi
						FROM ".TBL_PREFIX."produkty p
						JOIN ".TBL_PREFIX."produkty_matky m ON p.id_matka = m.id_matka
						WHERE p.kusu_skladem<=p.minimalni_mnozstvi
						GROUP BY p.id
						ORDER BY rozdil, nazev_produktu") or die(err(1));


Nevíte co je na tom zvýrazněném kousku kódu špatně? Proč nemůžu takto odečítat?

Děkuju moc.
stepanka
Profil *
Omlouvám se za špatné naformátování. Oprava:


$result = mysql_query("SELECT IF(m.varianty_zapnute=1, CONCAT(m.$nazev,' - ',p.$nazev), m.$nazev) as nazev_produktu,
						(p.kusu_skladem-p.minimalni_mnozstvi) AS rozdil,
						p.kusu_skladem,
						p.minimalni_mnozstvi
						FROM ".TBL_PREFIX."produkty p
						JOIN ".TBL_PREFIX."produkty_matky m ON p.id_matka = m.id_matka
						WHERE p.kusu_skladem<=p.minimalni_mnozstvi
						GROUP BY p.id
						ORDER BY rozdil, nazev_produktu") or die(err(1));
stepanka
Profil *
Tak jsem zjistila, ze pokud zaměním mínus za plus, sčítá to dobře, pokud tam není záporné číslo plus nula. Když je tam mínus, odečítá dobře, pokud tam není záporné číslo mínus cokoliv... Tomu vůbec nerozumím. Nestalo se někomu někdy něco podobného?

Děkuju.
ninja
Profil
A jaká nesmyslná čísla ti to vrací? Zvýrazněný kus kódu je v pořádku.
stepanka
Profil *
ninja:
Díky za reakci, vrací mi to například, že -4 - 0 = 18446744073709551612
stepanka
Profil *
Aha, už jsem na to přišla. Až teď jsem si všimla, že jeden z těch sloupců mám v databázi uložený jako UNSIGNED, tím pádem bral integer jen v kladných hodnotách. UNSIGNED jsem odebrala a už to odečítá dobře. Stejně tam byl zbytečný..
asdfgh
Profil *
Na co tam mate group by? Id je nejspise jedinecne...

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:

0