Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 29. 8. 2014, 10:29:37
Mám zhruba nějakej takovej dotaz do databáze:
SELECT * FROM contracts JOIN orders ON contracts.order_id = orders.order_id WHERE contracts.user_id = 12 AND contracts.status = 'on' ORDER BY contracts.datum DESC LIMIT 10 , 20; Problém je, že nějak to úplně ignoruje to první číslo za LIMIT Předpokládal bych, že to seřadí výsledky sestupně podle data a vybere 20 řádků počínaje desátým. Ale mě to pořád vyhazuje výsledky od prvního řádku. Ta dvacítka jinak funguje (zobrazí se jen 20 záznamů).
Mám za to, že to nějak asi způsobuje ten JOIN , ale nevím co s tím..
|
||
Kajman Profil |
quatzael:
„vybere 20 řádků počínaje desátým“ Počínaje jedenáctým (deset přeskočí). Myslím, že to jen špatně kontrolujete. Zkuste si např. nějaká jiná (vyšší) čísla, asi dojdete k tomu, že je problém jinde - třeba v nejednoznačném řazení při rovnosti datumů. |
||
quatzael Profil |
#3 · Zasláno: 29. 8. 2014, 10:47:02
Kajman:
Právě, že jsem zkoušel různý čísla, kontroluju řádky podle id, a ať tam měním čísla jakkoli, vždycky to začne záznamem s id 543. |
||
Kajman Profil |
#4 · Zasláno: 29. 8. 2014, 10:52:09
Můžete připravit ukázku nefunkčnosti např. na http://sqlfiddle.com/ ?
|
||
quatzael Profil |
#5 · Zasláno: 30. 8. 2014, 10:21:11
Kajman:
Jestli jste si tím naprosto jistý, že je sql syntax správnej, tak asi nemá smysl vytvářet ukázku.. Zkoušel jsem zadat ten SQL dotaz přímo v phpMyAdmin a tam se to chová zase úplně jinak. Nastavil jsem LIMIT 0, 200. Prvních asi 10 řádků je snad ok (ale vypadá, že úplně jiné než mi to vyhazovalo přímo na stránce) a zbytek představuje asi 60 naprosto totožných řádků (včetně id - primárního klíče) pak dalších asi 60 totožných řádků (id+1) a do třetice to samý (id+2).. To je přece nesmysl. jak mi to může vyhodit záznamy několikrát opakovaně ty samé. Navíc ani jeden z nich nemá id 543, kterým začínal kterýkoli výpis na stránce. |
||
quatzael Profil |
#6 · Zasláno: 30. 8. 2014, 13:59:18
Ještě abych upřesnil o co se snažím. Potřebuju získat všechny řádky z tabulky orders, u kterých se shodují sloupce order_id se sloupci se stejným názvem z tabulky contracts, u kterých platí výše uvedené podmínky týkající se sloupců z tabulky contracts.
Nebo jinak řečeno: vytřídit z tabulky contracts řádky, které odpovídají uvedeným podmínkám. Z nich získat hodnoty ze sloupce order_id a podle těchto hodnot vyhledat řádky z tabulky orders s odpovídajícími hodnotami order_id |
||
quatzael Profil |
#7 · Zasláno: 30. 8. 2014, 18:50:30
Tak asi to vypadá, že největší problém způsobuje potom výpis v PHP pomocí cyklu while, dokonce ani ten počet řádků není ok. Zadám za limit počet řádků 2 a zobrazí se 6.
Mám tam: while ($row = mysqli_fetch_assoc($sql_result)) |
||
Kajman Profil |
#8 · Zasláno: 30. 8. 2014, 20:56:46
quatzael:
Ano, problém bude jinde než v limitu. Ukažte celý while cyklus plus pár řádku předtím s přípravou dotazu. |
||
quatzael Profil |
#9 · Zasláno: 30. 8. 2014, 21:16:44
Kajman:
Už jsem na to přišel. Měl jsem v tom cyklu while generovanej výpis přes $text = $text . "nový text"; a protože jsem zapomněl tu proměnnou mazat a běželo to už jako třetí cyklus, tak tam pořád zůstával ty výpisy z předchozích cyklů while . Teď se už zdá, že to funguje..
|
||
Časová prodleva: 10 let
|
0