Вложенный оператор выбора в MySQL-мой код не работает
Вот мой запрос
SELECT con_serial,column2,column3
FROM
(SELECT con_serial,column2,column3
FROM big_table
WHERE ISNULL(contact1, '')+'#'+ISNULL(contact2, '')+'#'+ISNULL(contact3, '')+'#'+ISNULL(contact4, '')+'#'+ISNULL(contact5, '')
LIKE '%' + '".$conserial."' + '%') AS a
WHERE con_serial
IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."')
при внутреннем выборе я хочу получить строки, которые имеют это значение $conserial
в одном из 5 столбцов (contact1...contact5)
и внешний выбор, чтобы выбрать строки из него, что их столбец con_serial
является одной из переменных ($contact1...$contact5)
Кто-нибудь может увидеть, что здесь не так?
2 ответа
Несмотря на вашу новую формулировку, это остается очень неясным.
Тем не менее я постараюсь дать вам ответ, основываясь на том, что я могу догадаться...
Сначала вот как я переформулирую ваши потребности:
- у вас есть некоторые значения в переменных PHP: один
$conserial
и пять$contact#
где#
1-5 - структура таблицы содержит как минимум эти столбцы:
con_serial
,column2
,column3
и пятьcontact#
где#
1-5 - Вы хотите выбрать строки, где оба (вот самая странная часть вашей потребности):
- по крайней мере, один из
contact#
столбцы соответствуют PHP$conserial
значение con_serial
столбец соответствует хотя бы одному из PHP$contact#
ценности
- по крайней мере, один из
Тем не менее, обратите внимание, что вам не нужно иметь два вложенных SELECT
: вы хотите, чтобы каждая строка удовлетворяла двум условиям, поэтому они могут быть AND в WHERE
пункт.
Исходя из этого, ваш запрос должен быть:
$query = "
SELECT con_serial, column2, column3
FROM big_table
WHERE con_serial IN ('$contact1', '$contact2', '$contact3', '$contact4', '$contact5')
AND '$con_serial' IN (contact1, contact2, contact3, contact4, contact5)
";
Я думаю, что сумма в части, где предложение является орехом, разрешается любым способом, я решил это с использованием двух IN, как это
SELECT con_serial,,column2,column3
FROM(SELECT con_serial,column2,column3
FROM
big_table
WHERE '".$conserial."' IN(contact1,contact2,contact3,contact4,contact5)) a
WHERE con_serial IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."'
это было то, что я хотел Tnx в любом случае;)