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

  • Автор темы Автор темы Boris
  • Дата начала Дата начала

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. Условие корректное.
 
Вот запрос
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 даже не глядя в мануалы.
 
спасибо, но что то не могу сообразить как запрос сделать
 
все разобрался надо просто все 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 ;
 
Вы имеете ввиду так
PHP:
JOIN tbl1 ON tbl1.uniq_id = tbl2.uniq_id
но как тогда сделать условие = 1 перечисленных полей
 
Сверху