E-mail Печать PDF

IN - данный оператор позволяет указать несколько значений в условии WHERE.

Синтаксис SQL IN

1
2
3
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

Пример Оператора IN

Есть таблица "Persons":

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Итак, мы хотим выбрать всех лиц, фамилии которых "Hansen"или "Pettersen" из таблице выше.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE LastName IN ('Hansen','Pettersen')

Результат запроса:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Комментарии

 
+1 #1 Шелест Константин 2010-10-29 18:34 Еще знаю один способ, но он не так удобен, он вообще не удобен:

SELECT *
FROM Persons
WHERE LastName = 'Hansen' OR LastName = 'Pettersen'

Цитировать
 
 
-11 #2 Димчик 2010-11-10 14:13 Цитирую Шелест Константин:
Еще знаю один способ, но он не так удобен, он вообще не удобен:

SELECT *
FROM Persons
WHERE LastName = 'Hansen' OR LastName = 'Pettersen'


хрен там, запрос вернёт либо Hansen либо Pettersen а нам нужно и то и другое
Цитировать
 
 
+1 #3 andy 2010-11-18 21:00 отакво во добре:
SELECT `id` , `nazva_tov` , `firma` , `najavnist` , `cina`
FROM `tovaru`
WHERE id
IN (
SELECT tovary_id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
LIMIT 0 , 30
Цитировать
 
 
+7 #4 sonyPlaystation 2011-02-09 12:30 Димчик, запрос вернет и то и другое, учи матчасть по алгебре логики! Цитировать
 
 
+5 #5 Max 2011-02-11 13:31 Согласен… вернет и 'Hansen' и 'Pettersen'. Зря человека обидели))) Цитировать
 
 
+1 #6 flash 2011-12-14 12:46 А как создать запрос если нужно выбрать всех Hansenов и Pettersenов с одинаковыми именами(FirstNa me)? Цитировать
 
 
0 #7 Dimitri 2012-01-08 23:05 Цитирую andy:
отакво во добре:
SELECT `id` , `nazva_tov` , `firma` , `najavnist` , `cina`
FROM `tovaru`
WHERE id
IN (
SELECT tovary_id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
LIMIT 0 , 30

У меня так не работает…
если я задаю на прямую данные в IN (1,2,3,…) или делаю предварительный запрос и подставляю данные IN ( $result ) то работает.
А как описано
IN (
SELECT tovary_id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
ничего не выводит.
echo mysql_num_rows( $sql); // выводит результат 0

В чем может быть загвоздка???
Цитировать
 
 
0 #8 nighting 2012-04-02 00:27 Цитирую Dimitri:
Цитирую andy:
отакво во добре:
SELECT `id` , `nazva_tov` , `firma` , `najavnist` , `cina`
FROM `tovaru`
WHERE id
IN (
SELECT tovary_id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
LIMIT 0 , 30

У меня так не работает…
если я задаю на прямую данные в IN (1,2,3,…) или делаю предварительный запрос и подставляю данные IN ( $result ) то работает.
А как описано
IN (
SELECT tovary_id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
ничего не выводит.
echo mysql_num_rows( $sql); // выводит результат 0

В чем может быть загвоздка???


во вложенном SELECT'e наименование результата должно совпадать с запросом т.е. нужно добавить AS id:
SELECT `id` , `nazva_tov` , `firma` , `najavnist` , `cina`
FROM `tovaru`
WHERE id
IN (
SELECT tovary_id AS id
FROM `tovar_na_zamov l`
WHERE tovary_id =2
)
LIMIT 0 , 30
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама