IN - данный оператор позволяет указать несколько значений в условии WHERE.
Синтаксис SQL IN
Пример Оператора 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" из таблице выше.
Для этого используем такой запрос:
Результат запроса:
| P_Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
SQL In





Комментарии
SELECT *
FROM Persons
WHERE LastName = 'Hansen' OR LastName = 'Pettersen'
хрен там, запрос вернёт либо Hansen либо Pettersen а нам нужно и то и другое Цитировать
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 Цитировать