Autor | Zpráva | ||
---|---|---|---|
4ever Profil |
#1 · Zasláno: 13. 10. 2011, 11:41:37 · Upravil/a: 4ever
Tenhle select bych dokázal udělat pomocí dvou sql příkazů, ale ten druhý by byl dost složitý a vyžadoval by složitou přípravu klauzule where, tak se chci zeptat jestli víte o způsobu jak to udělat jednodušeji.
Jde o to vybrat skupinu řádků, splňující určité pravidlo (např. WHERE b = 1 LIMIT 8,10 ORDER BY random() ) a tuto skupinu potom zpracuju v php a vytvořím z toho jedno pole (např. $positive_arr). Poté získat druhou skupinu řádků, které splňují stejné pravidlo, ale v této skupině, již nebudou zahrnuté záznamy, které byly v první skupině dat. A tuto skupinu potom zpracuju v php a vytvořím z toho druhé pole (např. $negative_arr). |
||
Kajman_ Profil * |
#2 · Zasláno: 13. 10. 2011, 11:50:23
4ever:
„Poté získat druhou skupinu řádků, které splňují stejné pravidlo“ Tak je vemte hned všechny (když mají stejná pravidla) a do prvního pole s v php dejte jen tolik, kolik potřebujete. Pokud to nezvládnete, klidně udělejte dva dotazy, svět se nezboří. |
||
4ever Profil |
#3 · Zasláno: 13. 10. 2011, 11:52:25
Kajman:
„Pokud to nezvládnete, klidně udělejte dva dotazy, svět se nezboří.“ Jo, asi to bude nejjednodušší. To vylučovací pravidlo, které id nechci zahrnout, vlastně mohu zpracovat rovnou během prvního cyklu s mysql_fetch_array. |
||
Knight Profil |
#4 · Zasláno: 13. 10. 2011, 12:50:13 · Upravil/a: Knight
SELECT * FROM `table` WHERE `id` NOT IN (SELECT `id` from `table` WHERE b = 1 LIMIT 8,10 ORDER BY random()) AND .... Připadně pokud to bude vycházet z PHP pole, tak vhodně implodovat, aby vznikl dotaz ve tvaru: SELECT * FROM `table` WHERE `id` NOT IN (1, 2, 3, 4, 5) AND .... kde ta čísla jsou nechtěná ID. |
||
Časová prodleva: 14 let
|
0