Лучший синтаксис запроса для вложенных таблиц? - PullRequest
1 голос
/ 11 января 2009

В моей таблице числовое поле с именем category_id. Я хочу сделать что-то вроде этого.

$ids=implode(',',$id_array);
$sql="SELECT * FROM myTbl WHERE IN(category_id,'$ids')";

Который должен выводить что-то вроде:

SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6');

Возможно ли это, и я использую правильный синтаксис для этого? Есть ли лучший способ сделать это?

Ответы [ 3 ]

3 голосов
/ 11 января 2009

Почти, но не совсем - вот один способ, которым это могло бы работать

$ids="'".implode("','",$id_array)."'";
$sql="SELECT * FROM myTbl WHERE category_id IN($ids)";

Который должен выводить что-то вроде:

SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');

Обратите внимание, что, поскольку поле является числовым, кавычки не нужны, но это полезный код, строящий списки строк в кавычках. В вашем случае вы могли бы упростить до

$ids=implode(',',$id_array);

(я предполагаю, что массив не пустой, элементы массива очищены и т. Д. Для ясности!)

2 голосов
/ 11 января 2009

Откуда вы получаете массив id? Если это из базы данных, вы должны рассмотреть все это там:

SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);
1 голос
/ 11 января 2009

Да, синтаксис для mysql такой:

SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6);

(поскольку значения являются целыми, им не нужны кавычки. Если бы они были строками, им нужно было бы заключить в свои кавычки - category_id IN ('a', 'b')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...