|
|
|
| Подскажите как правильно сделать запрос
Есть таблица catalog
id |cat | pc_or_server | form_factor |
1 | 1 | 1 | ATX |
2 | 1 | 1 | MicroATX |
3 | 0 | 0 | MicroATX |
4 | 1 | 0 | CEB |
|
Загвоздка в том что когда я осуществляю запрос ничего не вытаскивается я понимаю что это происходит из затого что
form_factor='ATX' и form_factor='MicroATX'
SELECT * FROM catalog WHERE TRUE AND pc_or_server='1' AND form_factor='ATX ' AND form_factor='CEB ' AND cat='1'
|
запрос должен вернуть ID 1,2, и4
Если короче как вытащить те товары в которых совпадают допустим хотя бы один из пораметров запроса, или все. | |
|
|
|
|
|
|
|
для: zorg84
(17.03.2013 в 03:19)
| |
SELECT * FROM catalog WHERE pc_or_server='1' OR form_factor='ATX ' OR form_factor='CEB ' OR cat='1'
|
| |
|
|
|
|
|
|
|
для: Valick
(17.03.2013 в 07:28)
| | Спасибо но не срабатывает выводит всё подряд
так что вопрос открыт
Вот код php в него попадают значение post и формируется массив $w
if (isset($_POST['submit_s'])) {
$w = array('TRUE');
if (($_POST['pc_or_server']))
{
$pc_or_server = $_POST['pc_or_server'];
$w[] = "pc_or_server='$pc_or_server'";
}
if (($_POST['form_factor']))
{
$form_factor = $_POST['form_factor'];
$w[] = "form_factor='$form_factor'";
}
if (($_POST['microatx']))
{
$microatx = $_POST['microatx'];
$w[] = "form_factor='$microatx'";
}
if (($_POST['cat']))
{
$cat = $_POST['cat'];
$w[] = "cat='$cat'";
}
$where = implode($w, ' AND ');
echo $query = 'SELECT * FROM catalog WHERE '.$where;
$result2 = mysql_query($query);
}
|
SELECT * FROM catalog WHERE TRUE or pc_or_server='1' or form_factor='ATX ' or form_factor='MicroATX' or cat='1' так выводит всё подряд | |
|
|
|
|
|
|
|
для: zorg84
(17.03.2013 в 22:33)
| |
SELECT * FROM catalog WHERE TRUE AND (cat='1' OR form_factor='ATX' OR form_factor='CEB' OR pc_or_server='1')
|
или так:
SELECT * FROM catalog WHERE cat='1' AND (form_factor='ATX' OR form_factor='CEB' OR pc_or_server='1')
|
| |
|
|
|
|
|
|
|
для: sasha12342
(20.03.2013 в 15:10)
| | Спасибо!! Попробую. | |
|
|
|
|
|
|
|
для: zorg84
(17.03.2013 в 22:33)
| | Вы думаете то что вам написали:
SELECT * FROM catalog WHERE pc_or_server='1' OR form_factor='ATX ' OR form_factor='CEB ' OR cat='1'
| и то что вы написали:
SELECT * FROM catalog WHERE TRUE or pc_or_server='1' or form_factor='ATX ' or form_factor='MicroATX' or cat='1'
| - это одно и то же?
После работы оптимизатора MySQL ваше
SELECT * FROM catalog WHERE TRUE or pc_or_server='1' or form_factor='ATX ' or form_factor='MicroATX' or cat='1'
| приводится к видуибо
TRUE or pc_or_server='1' or form_factor='ATX ' or form_factor='MicroATX' or cat='1'
| всегда равнои условиетеряет всякий смысл. | |
|
|
|
|
|
|
|
для: Sfinks
(21.03.2013 в 14:12)
| | Понятно спасибо за разжёвывание,
Я применил запрос sasha12342 он работает единственное я убрал $w = array('TRUE'); | |
|
|
|