SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.12.2017 03:15:29

pautinaweb
Участник
Зарегистрирован: 01.08.2017
Сообщений: 13

SQL запрос поиск по двум полям одной таблицы

Доброе время суток, прошу помочь с составлением запроса
есть две таблицы:
school - данные школы и school_filter таблица с параметрами фильтров

У таблицы school_filter было одно поле metro_id
и тогда было все нормально выборка осуществлялось так


SELECT s.`id` FROM school s, school_filter sf WHERE sf.teach_id = s.id AND sf.metro_id IN (133) GROUP BY s.id
 


Но вот решил добавить еще одно поле metro2_id (дал возможность указать еще одну станцию метро)  и тут не могу понять вроде бы всё просто но знаний не хватает
тоесть мне теперь необходимо теперь искать в двух полях одновременно
Если делаю так 

SELECT s.`id` FROM school s, school_filter sf WHERE sf.teach_id = s.id AND sf.metro_id IN (133) OR sf.metro2_id IN (133) GROUP BY s.id
 

то выводится 2 школы хотя по идее должна быть одна, так как совпадение только одно в поле metro2_id
подскажите как правильно это делается?

Отредактированно pautinaweb (26.12.2017 03:26:36)

Неактивен

 

#2 26.12.2017 03:31:03

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: SQL запрос поиск по двум полям одной таблицы

Создайте таблицы и тестовое наполнение данных на http://sqlfiddle.com/
(чтобы получилось что-то вроде http://sqlfiddle.com/#!9/ae8b4/5),
так, чтобы Ваш запрос на тестовом наборе данных возращал нежелательный результат и напишите желательный.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 26.12.2017 11:37:23

pautinaweb
Участник
Зарегистрирован: 01.08.2017
Сообщений: 13

Re: SQL запрос поиск по двум полям одной таблицы

http://sqlfiddle.com/#!9/f13d6/3

Получается так что нашлось две школы хотя совпадение одно

http://pixs.ru/showimage/showpng_7964452_28793501.png

Отредактированно pautinaweb (26.12.2017 11:38:33)

Неактивен

 

#4 26.12.2017 11:47:23

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: SQL запрос поиск по двум полям одной таблицы

Скобок не хватало, sql по другому интерпретировал
cond1 AND cond2 OR cond3, чем Вы ожидали.

SELECT s.`id`, s.`name` FROM school s, school_filter sf
WHERE sf.teach_id = s.id AND (sf.metro_id IN (133)
OR sf.metro2_id IN (133)) GROUP BY s.id


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 26.12.2017 12:50:02

pautinaweb
Участник
Зарегистрирован: 01.08.2017
Сообщений: 13

Re: SQL запрос поиск по двум полям одной таблицы

Спасибо, огромное!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson