Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: MySQL запрос. Как корректно сформулировать?
цитата
20/06/08 в 11:24
 Lamagro
Есть mysql таблица в таблице 500 записей. Поле COLOR содержит номер цвета, номеров может быть от 1 до 30.
Теперь вопрос как корректно сформулировать запрос что бы выбрать записи только 13 случайно заданных цветов? Я когда то сформулировал вопрос вот так icon_smile.gif
Код:
$sql = "SELECT * FROM pensils WHERE ";
   $as = "";
   foreach ($RANDcolors as $key => $val)
   {
      $sql .= $as." id=".addslashes($val);
      $as = " OR ";
   }
   $res = mysql_query($sql); $error = mysql_error();echo $error;   
icon_smile.gif
Этот (в принципе рабочий) вариант смотрится не очень изящно... Как переделать?
Заранее спасибо.
цитата
20/06/08 в 11:42
 Corex
Код:
SELECT color FROM pensils ORDER BY RAND() LIMIT 13
цитата
20/06/08 в 11:45
 Stek
SELECT * FROM pensils ORDER BY RANDOM() LIMIT 13
цитата
20/06/08 в 11:47
 Lamagro
ок
а если номера цветов жестко заданы? и их нужно перечислить?
цитата
20/06/08 в 13:17
 Corex

Тогда прямым указанием цветов или ID, как у тебя сейчас, только лучше сделать не через id=1 OR id=9 OR id=17, а id IN (1,9,17). Вместо foreach можно так:
Код:
$sql = "SELECT * FROM pensils WHERE id IN(" . implode(",", $RANDcolors) . ")";
цитата
20/06/08 в 13:47
 Lamagro
Corex писал:
Тогда прямым указанием цветов или ID, как у тебя сейчас, только лучше сделать не через id=1 OR id=9 OR id=17, а id IN (1,9,17). Вместо foreach можно так:
Код:
$sql = "SELECT * FROM pensils WHERE id IN(" . implode(",", $RANDcolors) . ")";
оо супер! биг сэнкс коллега!
smail04.gif
цитата
20/06/08 в 14:49
 Lamagro
хм а еще вопрос по теме...
как корректно составить запрос где проверяется 2 условия и на основе совпадений этих условий происходит дальнейшая выборка например вот так:
Код:
$sql = "SELECT id FROM pensils WHERE color IN(1,3,5,7) AND used  IS NULL OR used='NO'";

смысл в том что нужно выбрать все записи с цветами 1,3,5,7 но обязательно те в которых поле used равно NULL или NO
цитата
20/06/08 в 14:56
 samedi
Используй скобки для группировки.
цитата
20/06/08 в 15:11
 dDan
разве обязательно юзать IS NULL можно и так `field` = NULL
цитата
20/06/08 в 15:16
 Lamagro
samedi писал:
Используй скобки для группировки.
семен семеныч icon_smile.gif спасибо - недосямкал как то icon_smile.gif

dDan писал:
разве обязательно юзать IS NULL можно и так `field` = NULL
я когда вопрос возник так и написал, несработало, а вот через IS NULL - работает х3 почему
цитата
20/06/08 в 15:26
 xreload
мануал читай...помогает.
цитата
20/06/08 в 15:28
 Lamagro
xreload писал:
мануал читай...помогает.
угумс, надо смотаться за книжкой по sql


Эта страница в полной версии