SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 11:24 |
Есть mysql таблица в таблице 500 записей. Поле COLOR содержит номер цвета, номеров может быть от 1 до 30.
Теперь вопрос как корректно сформулировать запрос что бы выбрать записи только 13 случайно заданных цветов? Я когда то сформулировал вопрос вот так
Код: | $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; |
Этот (в принципе рабочий) вариант смотрится не очень изящно... Как переделать?
Заранее спасибо.
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
« ... full on ... »
С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686
|
Добавлено: 20/06/08 в 11:42 |
Код: | SELECT color FROM pensils ORDER BY RAND() LIMIT 13 |
|
|
Power of the lime madness...
|
6
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 20/06/08 в 11:45 |
SELECT * FROM pensils ORDER BY RANDOM() LIMIT 13
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
6
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 11:47 |
ок
а если номера цветов жестко заданы? и их нужно перечислить?
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
« ... full on ... »
С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686
|
Добавлено: 20/06/08 в 13:17 |
Тогда прямым указанием цветов или ID, как у тебя сейчас, только лучше сделать не через id=1 OR id=9 OR id=17, а id IN (1,9,17). Вместо foreach можно так:
Код: | $sql = "SELECT * FROM pensils WHERE id IN(" . implode(",", $RANDcolors) . ")"; |
|
|
Power of the lime madness...
|
6
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 13:47 |
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) . ")"; | |
оо супер! биг сэнкс коллега!
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 14:49 |
хм а еще вопрос по теме...
как корректно составить запрос где проверяется 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
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 20/06/08 в 14:56 |
Используй скобки для группировки.
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 20/06/08 в 15:11 |
разве обязательно юзать IS NULL можно и так `field` = NULL
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 15:16 |
samedi писал: | Используй скобки для группировки. |
семен семеныч спасибо - недосямкал как то
dDan писал: | разве обязательно юзать IS NULL можно и так `field` = NULL |
я когда вопрос возник так и написал, несработало, а вот через IS NULL - работает х3 почему
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 20/06/08 в 15:26 |
мануал читай...помогает.
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 20/06/08 в 15:28 |
xreload писал: | мануал читай...помогает. |
угумс, надо смотаться за книжкой по sql
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|