Autor | Zpráva | ||
---|---|---|---|
bredis Profil |
#1 · Zasláno: 22. 9. 2013, 10:45:29
Ahoj,
potřebuju poradit s následujícím výpisem: SELECT s_contact_email FROM `oc_t_item` WHERE pk_i_id IN ( SELECT pk_i_id FROM `oc_t_item` UNION SELECT fk_i_item_id FROM `oc_t_item_custom_attr_values` WHERE s_value IN ( SELECT s_value FROM `oc_t_item_custom_attr_values` WHERE DATE_FORMAT( s_value, '%Y-%m-%e' ) = CURRENT_DATE( ) ) ) Jde mi o to, aby to vypsalo pouze email s aktuálním datem. Teď to vypíše všechny emaily a na poslední podmínku to vůbec neraeguje. Co tam mám špatně? Díky |
||
Kajman Profil |
Vypisujete data pouze ze dvou tabulek, ne ze tří.
Zkusil bych vyhodit část SELECT pk_i_id FROM `oc_t_item` UNION SELECT s_contact_email FROM `oc_t_item` WHERE pk_i_id IN (SELECT fk_i_item_id FROM `oc_t_item_custom_attr_values` WHERE s_value BETWEEN '2013-09-22 00:00:00' AND '2013-09-22 23:59:59') A někdy je v mysql lepší přepsat dotaz na join místo "in (select)", v kterém plánovač občas volí neoptimální procházení. |
||
bredis Profil |
#3 · Zasláno: 22. 9. 2013, 12:44:11
A jo ...máte pravdu je to ze dvou tabulek...nějak jsem se do toho zamotal.
Abych vysvětlil o co mi jde: 1) mám tabulku "oc_t_item" a z ní potřebuju dostat email (s_contact_email) na uživatele 2) v druhý tabulce `oc_t_item_custom_attr_values` je sloupec s_value kde uživatel zadává datum 3) jediný schodný prvek pro obě tabulky je pk_i_id v první tabulce a fk_i_item_id v druhé tabulce. 4) potřebuju dostat ten email který má aktuální den ve sloupci s_value Snad je to truchu srozumitelný....už se v tom nějak motám:) |
||
Časová prodleva: 11 let
|
0