Mysql Помогите сделать запрос

Boris

Новичок
Здравствуйте!
Есть таблица tb_test
есть поля: id(varchar) opt1(int) opt2(int) opt3int) opt4(int) opt5(int)
Надо сделать запрос с условием, что если один из opt1 --- opt5 равен 1 то показать его.
Делал так
WHERE opt1=1
OR opt2=1
OR opt3=1
OR opt4=1
OR opt5=1

Получал повторение строк дважды.
Подскажите пожалуйста как правильно сделать такой запрос.
Спасибо!
 

Вурдалак

Продвинутый новичок
Повтроение строк (одной таблицы) возможно лишь при использовании JOIN. Условие корректное.
 

Boris

Новичок
Вот запрос
PHP:
SELECT  company_names.name_ru name_ru,
company_names.new_or_update new_or_update,
company_names.paid paid,
company_updates.uniq_id uniq_id,
company_updates.users_login users_login,
company_updates.last_date last_date,
company_updates.update_date update_date,
company_updates.company_names company_names,
company_updates.company_informations company_informations,
company_updates.company_coordinates company_coordinates,
company_updates.company_services company_services,
company_updates.company_services_products_prices company_services_products_prices,
company_updates.company_discounts_services company_discounts_services,
company_updates.company_alboms_services company_alboms_services,
company_updates.company_images_services company_images_services,
company_updates.company_products company_products,
company_updates.company_discounts_products company_discounts_products,
company_updates.company_alboms_products company_alboms_products,
company_updates.company_images_products company_images_products
FROM life_updates as company_updates, tmp_names as company_names
WHERE company_updates.company_names = 1
or company_updates.company_informations = 1
or company_updates.company_coordinates = 1
or company_updates.company_services = 1
or company_updates.company_services_products_prices = 1
or company_updates.company_discounts_services = 1
or company_updates.company_alboms_services = 1
or company_updates.company_images_services = 1
or company_updates.company_products = 1
or company_updates.company_discounts_products = 1
or company_updates.company_alboms_products = 1
or company_updates.company_images_products = 1
and company_updates.uniq_id = company_names.uniq_id
and company_updates.users_login = company_names.users_login
group by company_names.uniq_id
order by update_date asc ;
 

Вурдалак

Продвинутый новичок
Видимо это условие не связывает таблицы однозначно:
company_updates.uniq_id = company_names.uniq_id
and company_updates.users_login = company_names.users_login
Но без подглядывания в мануал я не был уверен насчёт приоритетов операторов OR и AND, лучше использовать JOIN ... ON ... для читабельности.
 

С.

Продвинутый новичок
Приоритет AND всегда и везде выше OR даже не глядя в мануалы.
 

Boris

Новичок
спасибо, но что то не могу сообразить как запрос сделать
 

Boris

Новичок
все разобрался надо просто все or взять в скобки:
PHP:
WHERE (company_updates.company_names = 1
or company_updates.company_informations = 1
or company_updates.company_coordinates = 1
or company_updates.company_services = 1
or company_updates.company_services_products_prices = 1
or company_updates.company_discounts_services = 1
or company_updates.company_alboms_services = 1
or company_updates.company_images_services = 1
or company_updates.company_products = 1
or company_updates.company_discounts_products = 1
or company_updates.company_alboms_products = 1
or company_updates.company_images_products = 1)
and company_updates.uniq_id = company_names.uniq_id
and company_updates.users_login = company_names.users_login
group by company_names.uniq_id
order by update_date asc ;
 

Boris

Новичок
Вы имеете ввиду так
PHP:
JOIN tbl1 ON tbl1.uniq_id = tbl2.uniq_id
но как тогда сделать условие = 1 перечисленных полей
 
Сверху