[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложный запрос
Evilsoul
Можно ли одним запросом вытащить строку из табл.1 и 4 строки из табл.2 ?



Спустя 7 минут, 51 секунда (12.01.2011 - 16:13) linker написал(а):
Конечно, при оговоренных условиях.

Спустя 23 секунды (12.01.2011 - 16:14) Evilsoul написал(а):
Вот так у меня получилось:
        $res = mysqlQuery("SELECT *
FROM `images`, `galleries`
WHERE `images`.`aid` = `galleries`.`id`
LIMIT 4"

);

while($row = mysql_fetch_assoc($res))
{


print_r($row);
}

А как сделать что бы эти 4 строки вытягивались рандомом?



Спустя 2 минуты, 31 секунда (12.01.2011 - 16:16) Evilsoul написал(а):
linker
О, привет. Кстати, ты был прав насчет даты из базы, её можно форматировать в запросе.

Спустя 1 минута, 42 секунды (12.01.2011 - 16:18) linker написал(а):
... ORDER BY RAND() ...
но это будет грустное зрелище при больших объемах данных.

Спустя 1 минута, 25 секунд (12.01.2011 - 16:19) Evilsoul написал(а):
Вот-вот, читал я о этом, поэтому и хочу переделать без РАНД и + одним запросом, а не как у меня было два ещё и цикл в цикле...

Я пытался добавить в условие вот это:
 AND `images`.`id` = ".rand(1,$row_count)." 

но так он вытягивает только одну строку... (

Спустя 3 минуты, 49 секунд (12.01.2011 - 16:23) linker написал(а):
Если пропусков значений id нет, то
$ids = array(rand(1,$row_count), rand(1,$row_count), rand(1,$row_count), rand(1,$row_count)) // чтоб было понятнее
... AND `images`.`id` in (" . implode(',', $ids). ") ...

Спустя 8 минут, 52 секунды (12.01.2011 - 16:32) Evilsoul написал(а):
Гы, прикольно %) Работает, только вытягивает не всегда 4 записи, а 2, 3, 4 smile.gif

Спустя 48 секунд (12.01.2011 - 16:33) Evilsoul написал(а):
        $ids = array(rand(1,5), rand(1,5), rand(1,5), rand(1,5));       

$res = mysqlQuery("SELECT *
FROM `images`, `galleries`
WHERE `images`.`aid` = `galleries`.`id` AND `images`.`id` in ("
. implode(',', $ids). ")
LIMIT 4"

);

while($row = mysql_fetch_assoc($res))
{


print_r($row);
echo '<br>';
}

Спустя 6 минут, 16 секунд (12.01.2011 - 16:39) Michael написал(а):

 ! 

М
Давайте своим темам осмысленные названия
Michael

Спустя 1 минута, 42 секунды (12.01.2011 - 16:41) Evilsoul написал(а):
А как же назвать?

Спустя 4 минуты, 57 секунд (12.01.2011 - 16:46) Michael написал(а):
Цитата (Evilsoul @ 12.01.2011 - 15:41)
А как же назвать?

жжешь

Спустя 4 минуты (12.01.2011 - 16:50) Evilsoul написал(а):
Спрашиваю smile.gif

Спустя 4 минуты, 8 секунд (12.01.2011 - 16:54) Michael написал(а):
Ты не спрашивай, а мотай на ус. Т.к. такое название темы - повод для Предупреждения и закрытия темы. Пока - устно.

Спустя 1 минута, 36 секунд (12.01.2011 - 16:55) Evilsoul написал(а):
Нет, что-то не то...
Вот какой результат я получаю:
Array ( [id] => 1 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 1.jpg [title] => Первая галерея [description] => опись [day] => 10 [month] => 01 [year] => 2011 ) 

Array ( [id] => 1 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 2.jpg [title] => Первая галерея [description] => опись [day] => 10 [month] => 01 [year] => 2011 )

Array ( [id] => 1 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 3.jpg [title] => Первая галерея [description] => опись [day] => 10 [month] => 01 [year] => 2011 )

Array ( [id] => 1 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 4.jpg [title] => Первая галерея [description] => опись [day] => 10 [month] => 01 [year] => 2011 )


А вот который хочу получить

Array ( [id] => 4 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 4.jpg 
[id] => 2 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 2.jpg
[id] => 5 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 5.jpg
[id] => 1 [aid] => 1 [date] => 2011-01-10 12:37:21 [subtitle] => [fname] => 1.jpg
[title] => Первая галерея [description] => опись [day] => 10 [month] => 01 [year] => 2011 )
[/php]

Спустя 2 минуты, 44 секунды (12.01.2011 - 16:58) Evilsoul написал(а):
Michael
Я ничего против не имею, просто не знаю как это назвать по другому...

Спустя 12 минут, 42 секунды (12.01.2011 - 17:11) Evilsoul написал(а):
Вот так это было:
 
$res = mysqlQuery("SELECT * FROM `galleries`");

while($row = mysql_fetch_assoc($res))
{
$res2 = mysqlQuery("SELECT `aid`, `fname`
FROM `images`
WHERE `aid` = "
.$row['id']. "
ORDER BY RAND()
LIMIT "
. LIMIT_VIEW_IMG_GALLERIES);

$row['date'] = $row['date'];
$row['title'] = htmlspecialchars($row['title']);
$row['description'] = htmlspecialchars($row['description']);

echo "\t" .$row['date'].
"\n\t<h2>" .$row['title'].
"</h2>\n\t" .$row['description']. "<br>";

for($i = 1; mysql_num_rows($res2) >= $i; $i++)
{
$row_img = mysql_fetch_assoc($res2);

$row['img'.$i] = '<img src="/images/' .$row_img['fname']. '">';

echo "\n\t" .$row['img'.$i];
}

echo "<br><hr>\n\n";
}

и оно работает
А я хочу это дело упразнить

убрать RAND и цикл из цикла...


_____________
Кто хочет, ищет возможности, кто не хочет - причины. /_ К. Маркс
Истенно велик тот человек который сумел овладеть своим временем. /_Гесиод VIII-VII вв. до Р. Х.
Медлительный непрерывно борится с бедами всю жизнь. /_Гесиод VIII-VII вв. до Р. Х.
Для того что бы увидеть радугу нужно пережить дождь.
Женщины: Хочется чего-то красного но синего.
Быстрый ответ:

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