2015-07-22 2 views
1

Я хотел бы выбрать f.field_node_tax_inception_tid только если a.rid = 5, как я могу это сделать? Потому что без, если он отображает тонны результатов и distinct не работает.sql mysql select column IF

SELECT DISTINCT c.couponid, c.id, y.tid, f.field_node_tax_inception_tid 
       FROM `users_roles` a, `field_data_field_ypefthinos` b, `custom_redemptions` c, `field_data_field_chain_manager` e, `field_data_field_node_tax_inception` f, `field_data_field_brand_manager` j, `field_data_field_brand_node_ref` k, `field_data_field_product_ref` i, `field_data_field_company_manager` z, `field_data_field_brand_company` t, `taxonomy_term_data` y 
       WHERE a.uid = ? 
       AND 
       (a.rid = 4 
       AND b.field_ypefthinos_uid = a.uid 
       AND b.entity_id = c.branchid) 
       OR 
       (a.rid = 5 
       AND e.field_chain_manager_uid = a.uid 
       AND e.entity_id = f.entity_id 
       AND f.field_node_tax_inception_tid = c.chainid 
       AND f.field_node_tax_inception_tid = y.tid) 
       OR 
       (a.rid = 9 
       AND j.field_brand_manager_uid = a.uid 
       AND j.entity_id = k.field_brand_node_ref_nid 
       AND k.entity_id = i.field_product_ref_nid 
       AND i.entity_id = c.couponid) 
       OR 
       (a.rid = 6 
       AND z.field_company_manager_uid = a.uid 
       AND z.entity_id = t.field_brand_company_nid 
       AND t.entity_id = k.field_brand_node_ref_nid 
       AND k.entity_id = i.field_product_ref_nid 
       AND i.entity_id = c.couponid) 
+0

возможно дубликат [ 'IF' в 'SELECT' заявление - выбрать выходное значение на основе значений столбцов] (http://stackoverflow.com/questions/ 5951157/если-в-Select-заявление-выбрать-выход-ценностный-на-столбцов значений) – mxix

ответ

1

Использование CASE

case a.rid when 5 then f.field_node_tax_inception_tid when 5 else null end 
1
select IF(a.rid = 5,f.field_node_tax_inception_tid,null)