[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос с несколькими параметрами WHERE
boro-da
Работаю сейчас с новостями и наткнулся на одну интересную вещь.

Как сделать запрос с несколькими параметрами в WHERE когда количество параметров заранее не известно.

Пример:
PHP
mysql_query("SELECT n,a,b FROM news WHERE [b]cat = 1 or cat = 3 ")


Как можно реализовать такой запрос?

Так как в запросе может быть только одно значение cat а может быть и несколько... Начал делать... Но я думаю это не рационально.

PHP
switch($kolichestvo_cat)
{
case 1:
mysql_query("SELECT n,a,b FROM news WHERE cat = $cat["1"] ");
break;

case 2:
case 1:
mysql_query("SELECT n,a,b FROM news WHERE cat = $cat["1"] or cat = $cat["2"] ");
break;

и т.д.




Спустя 4 минуты, 36 секунд (4.08.2009 - 12:02) waldicom написал(а):
IN + implode() ?

Спустя 2 минуты, 44 секунды (4.08.2009 - 12:05) PandoraBox2007 написал(а):
PHP
$cat_in = implode(','$cat);
mysql_query("SELECT n,a,b FROM news WHERE cat = IN ($cat_in)");

Спустя 33 минуты, 48 секунд (4.08.2009 - 12:39) boro-da написал(а):
разпишу более подробно:

есть 3 таблицы

news - хранятся новости
categories - хранятся категории новостей
sections - хранятся разделы

в таблице news колонки:
news_id, news_name, news_text, news_category

в таблице categories колонки:
category_id, category_name, category_section

в таблице sections колонки:
section_id, section_name

допустим есть разделы (sections)
1) Музыка
2) Писатели

и категории (categories):
Рок (Музыка)
Рэп (Музыка)
Блюз (Музыка)
Пушкин (Писатели)
Толстой (Писатели)
Лермонтов (Писатели)

так вот нужно вывети все новости раздела(section) допустим Музыка.

как сформулировать запрос на получение массива (category_id, category_name);
а потом запросить все новости у которых категории совпадают с id категорий из массива

Спустя 45 минут, 26 секунд (4.08.2009 - 13:24) waldicom написал(а):
SQL
SELECT * FROM news , categories , sections
LEFT JOIN `categories` ON `categories`.`category_section` = `sections`.`section_id`
LEFT JOIN `news` ON `news`.`news_category` = `categories`.`category_id`
WHERE `sections`.`section_name` = "Музыка"


Где-то так. Не проверял, потому что лень создавать структуру.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.