Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите как правильно сделать запрос
 
 автор: zorg84   (17.03.2013 в 03:19)   письмо автору
 
 

Подскажите как правильно сделать запрос

Есть таблица 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

Если короче как вытащить те товары в которых совпадают допустим хотя бы один из пораметров запроса, или все.

  Ответить  
 
 автор: Valick   (17.03.2013 в 07:28)   письмо автору
 
   для: 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'

  Ответить  
 
 автор: zorg84   (17.03.2013 в 22:33)   письмо автору
 
   для: 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' так выводит всё подряд

  Ответить  
 
 автор: sasha12342   (20.03.2013 в 15:10)   письмо автору
 
   для: 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')

  Ответить  
 
 автор: zorg84   (21.03.2013 в 00:23)   письмо автору
 
   для: sasha12342   (20.03.2013 в 15:10)
 

Спасибо!! Попробую.

  Ответить  
 
 автор: Sfinks   (21.03.2013 в 14:12)   письмо автору
 
   для: 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'
приводится к виду
SELECT * FROM catalog
ибо
TRUE or pc_or_server='1' or form_factor='ATX ' or form_factor='MicroATX' or cat='1'
всегда равно
TRUE
и условие
WHERE
теряет всякий смысл.

  Ответить  
 
 автор: zorg84   (21.03.2013 в 23:50)   письмо автору
 
   для: Sfinks   (21.03.2013 в 14:12)
 

Понятно спасибо за разжёвывание,
Я применил запрос sasha12342 он работает единственное я убрал $w = array('TRUE');

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования