Autor | Zpráva | ||
---|---|---|---|
lukasik Profil |
#1 · Zasláno: 10. 8. 2012, 15:02:14
Mám dvě tabulky
1. záznamy [id,name, ..] 2. prémium [id_záznamu, expirace, ..] A potřebuji vytvořit dotaz, který vybere všechny záznamy, které odpovídají podmínce a náhodně seřadí ty záznamy, které mají záznam v tabulce prémium a pak vybere všechny, které nemají záznam v prémium, seřadí je náhodně a vybere jich X-počet vrácených záznamů s prémiem Takže potřebuji spojit tyto dotazy do sebe SELECT * FROM záznamy WHERE id IN (SELECT id FROM premium WHERE expires > NOW()) AND podmínka ORDER BY RAND() SELECT * FROM záznamy WHERE id NOT IN (SELECT id FROM premium WHERE expires > NOW()) AND podmínka ORDER BY RAND() LIMIT 10-countZprvníhoDotazu |
||
Kajman Profil |
#2 · Zasláno: 10. 8. 2012, 15:13:55
SELECT DISTINCT z.* FROM záznamy z LEFT JOIN premium p ON z.id = p.id AND p.expires > Now() WHERE podminka ORDER BY p.id IS NULL, Rand() LIMIT 10 Ale rychlé to (hlavně díky rand) nebude. |
||
lukasik Profil |
#3 · Zasláno: 10. 8. 2012, 19:49:49
Díky, tohle mě nenapadlo
ORDER BY p.id IS NULL, Bude to zdržení citelné při práci s řádově stovky záznamy? Předpokládám, že bych se neměl dostat nad 1k |
||
Časová prodleva: 12 let
|
0