Как выбрать несколько значений в одном столбце?
Я пытаюсь выбрать несколько значений в одном столбце. В основном, я хочу, чтобы запрос XI_1Y
все из них в family
столбцов со значениями Software_1Y
, XI_1Y
и P1_1Y
Я выполняю этот запрос:
SELECT 'salesorder'
,'masterproduct'
,'family'
,'birthstamp'
,'duedate'
,COUNT(*) AS 'total'
FROM 'report'
WHERE 'birthstamp' BETWEEN '$startDT'
AND '$endDT'
AND 'family' = 'Software_1Y'
AND 'family = 'XI_1Y'
AND 'family' = 'PI_1Y'
GROUP BY 'salesorder'
,'masterproduct'
,'family'
,'duedate';
Мой запрос не возвращает строк, но я ищу каждую семью по одному, у меня есть значения.
Что не так с моим запросом?
Кроме того, моя цель - получить все строки, family
значения которых - Software_1Y
, XI_1Y
и PI_1Y
.
Ответы
Ответ 1
Как насчет использования IN вместо
SELECT 'salesorder',
'masterproduct',
'family',
'birthstamp',
'duedate',
COUNT( * ) AS 'total'
FROM 'report'
WHERE 'birthstamp' BETWEEN '$startDT' AND '$endDT'
AND 'family' IN ('Software_1Y','XI_1Y','PI_1Y')
GROUP BY 'salesorder',
'masterproduct',
'family',
'duedate';
Причина, по которой не возвращаются никакие значения, из-за этого раздела
AND 'family' = 'Software_1Y'
AND 'family = 'XI_1Y'
AND 'family' = 'PI_1Y'
family
не может быть сразу тремя значениями, но это может быть 1 из 3 значений.
Вот почему вы должны использовать IN.
Другим способом взглянуть на это было бы использование OR, но это очень сильно изматывается.
Ответ 2
$query=" SELECT 'salesorder','masterproduct','family','birthstamp','duedate', COUNT( * ) AS 'total' FROM 'report'
WHERE 'birthstamp' BETWEEN '$startDT' AND '$endDT'
AND ('family' = 'Software_1Y'
OR 'family' = 'XI_1Y'
OR 'family' = 'PI_1Y')
GROUP BY 'salesorder','masterproduct','family','duedate' ";
Это должно быть связано с AND вместо OR при запросе колонки FAMILY.
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
//Operation you want to perform
}
@jude: Кажется, вы прямо передаете запрос, который имеет строку типа string непосредственно как параметр mysql_fetch_array, что неверно. Вместо этого следуйте приведенному выше подходу...