Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
prot222
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
1

Написать запрос, который выбрал бы все id у которых ab = 5 и ab = 6

31.07.2014, 15:18. Просмотров 695. Ответов 11
Метки нет (Все метки)

Имеется табличка
id / ab
1 / 5
1 / 6
2 / 6
3 / 6
3 / 5
4 / 5

Задача: написать запрос, который выбрал бы все id у которых ab = 5 и ab = 6
Ожидаемый результат: id = [1,3]

Делаю:
MySQL
1
2
SELECT a.id FROM table a
WHERE a.ab IN (5,6)
Ещё раз
Задача: написать запрос, который выбрал бы все id у которых ab = 5 и ab = 6
Ожидаемый результат: id = [1,3]

Получаю: вывод всех строк, т.к. все они содержат или 5 или 6

Помогите пожалуйста составить запрос или подтолкните на мысль как такое можно сделать
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2014, 15:18
Ответы с готовыми решениями:

Написать запрос, который выводит все записи по сотрудникам, родившимся в 1977 — 1983 годах
Есть таблица SOTR со следующей структурой: Название поляТипНазначение NameСтрокаИмя сотрудника...

Написать запрос, который удалить все записи из базы где, например столбец «А» содержит значение
Как написать запрос, который удалить все записи из базы где, например столбец «А» содержит значение...

Можно ли сделать, что запрос "SELECT _WHERE _AND_IN" выбрал все записи?
Имеется запрос, который выбирает записи по двум критериям и по списку значений SELECT * FROM...

Как написать запрос который...
из двух таблиц 1)'Команды' с полями id, Название 2)'Результаты' с полями id_Команды1,...

Как мне сделать запрос что бы выбрал людей от 16 до 35 лет
Привет, подскажите как сделать правельно запрос, в таблице users есть поле date(она хранить дату...

11
Logumanov
16 / 12 / 3
Регистрация: 06.03.2014
Сообщений: 71
31.07.2014, 23:13 2
select id from a where ab=5 or ab=6
0
Joeymax
1064 / 355 / 82
Регистрация: 31.03.2012
Сообщений: 973
01.08.2014, 01:20 3
Попробуй, но это не самое оптимальное
MySQL
1
select t1.id from t t1, (select * from t where t.ab=6) t2 where t1.ab=5 and t2.id=t1.id
0
prot222
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
01.08.2014, 14:02  [ТС] 4
Logumanov, ab in(5,6) или where ab=5 or ab=6 фактически одно и тоже
Joeymax, MySQL вернула пустой результат (т.е. ноль строк). ( Запрос занял 0.0006 сек. )
0
01.08.2014, 14:02
igor_fl
63 / 63 / 28
Регистрация: 18.03.2014
Сообщений: 794
Завершенные тесты: 2
01.08.2014, 14:34 5
SQL
1
SELECT a.id FROM TABLE a WHERE a.ab IN (5,6) AND COUNT(a.id) > 1
0
Logumanov
16 / 12 / 3
Регистрация: 06.03.2014
Сообщений: 71
01.08.2014, 14:51 6
prot222, по идее, этот запрос должен работать. Может, у вас поле не INT? Тогда '5' и '6' нужно заключить в кавычки.
0
Grossmeister
Модератор
3622 / 2633 / 473
Регистрация: 21.01.2011
Сообщений: 11,412
01.08.2014, 14:53 7
Цитата Сообщение от igor_fl Посмотреть сообщение
WHERE a.ab IN (5,6) AND COUNT(a.id) > 1
С каких это пор COUNT разрешен в WHERE?

2TC
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT id, COUNT(*)
FROM
(
SELECT id 
FROM tab1
WHERE ab = 5
 
UNION ALL
 
SELECT id 
FROM tab1
WHERE ab = 6
)
GROUP BY id
HAVING COUNT(*) > 1
0
prot222
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
01.08.2014, 15:00  [ТС] 8
igor_fl, увы, так не получится, для count в where нужен либо подзапрос либо group. В любом случае ничего придумать не могу

Добавлено через 6 минут
Grossmeister, #1248 - Every derived table must have its own alias

Это так, чтоб видеть структуру
SQL
1
2
CREATE TABLE IF NOT EXISTS `table1` (`id` INT(11) NOT NULL,`ab` INT(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `table1` (`id`, `ab`) VALUES (1, 5),(1, 6),(2, 6),(3, 6),(3, 5),(4, 5);
0
Sergio Leone
2472 / 1117 / 580
Регистрация: 07.06.2014
Сообщений: 3,259
01.08.2014, 15:03 9
Лучший ответ Сообщение было отмечено prot222 как решение

Решение

prot222, а так?

SQL
1
2
 SELECT DISTINCT a.id FROM table11 a, table1 b
   WHERE a.id=b.id AND  a.ab =5 AND b.ab=6
1
Grossmeister
Модератор
3622 / 2633 / 473
Регистрация: 21.01.2011
Сообщений: 11,412
01.08.2014, 15:04 10
Цитата Сообщение от prot222 Посмотреть сообщение
Grossmeister, #1248 - Every derived table must have its own alias
Ну да, я забыл, что в MySQL inline view обязана иметь алиас (в Oracle не обязательно). После закрывающей скобки забацай алиас и подтяни его к id во внешнем запросе

Возможно в запросах, объединенных по UNION нужно еще DISTINCT добавить
0
prot222
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
01.08.2014, 15:17  [ТС] 11
Sergio Leone, круто! спасибо, всё работает!
ОФФТОП
0
Joeymax
1064 / 355 / 82
Регистрация: 31.03.2012
Сообщений: 973
02.08.2014, 05:41 12
Цитата Сообщение от prot222 Посмотреть сообщение
Joeymax, MySQL вернула пустой результат (т.е. ноль строк).
Бред, не верю
1
Миниатюры
Написать запрос, который выбрал бы все id у которых ab = 5 и ab = 6  
02.08.2014, 05:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 05:41

Нужен запрос, который выводит топ 6 категорий и все их товары.
Как в рекламе: 'Забыли как правильно писать запросы? Значит, хорошо отдохнули' Что-то я...

Написать SQL запрос, который позволяет выбрать информацию из базы данных
Информацию о водителях авто и выполненную каждым из них количество заказов, которые выполнили...

Написать запрос, который выводит последние 10 записей без использования order by
Нужно написать запрос, который выводит последние 10 записей без использования order by


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.