Один mysql-запрос и два условия выборки

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Требуется сделать две выборки, но с разными условиями. 1-е условие точно определено, а второе - это просто выборка случайных строк.
Возможно ли это сделать одним запросом?
 
Конкретики хотелось бы. На поставленный в такой форме вопрос можно ответить да, возможно. Но подобный ответ не принесет решения вопроса.
 
Конкретики хотелось бы
Будет запрос с джоинами, в котором будут выбираться посты за последнее время, т.е. самые свежие с лимитом каким-нибудь, скажем 5-10. Сделал я выборку и вывел их. Затем мне нужно сделать на сайте еще один блок, в котором будут выводиться те же посты, но выборка должна быть не по дате, как в 1-м случае, а случайным образом, с тем же лимитом. Вот и хотелось бы уместить всё в один запрос. задался вопросом - возможно ли такое.
 
Разобраться с UNION - пол дела, но не могу найти примеры, как выводить результат после такого запроса?
 
Результаты выводятся аналогично результатам из обычного запроса. В качестве теста можно запрос ввести в phpmyadmin или подобную программулину, чтобы посмотреть какие есть названия столбцов, из которых планируете выводить данные.
 
В качестве примера сойдет:
PHP:
$q = mysql_query("SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT COUNT(`id`) FROM `table2` WHERE `pid`=1");
$t1 = mysql_fetch_assoc($q);
$t2 = mysql_fetch_assoc($q);

Рекомендую, также, почитать данный материал Для просмотра ссылки Войди или Зарегистрируйся
 
PHP:
$q = mysql_query("SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT COUNT(`id`) FROM `table2` WHERE `pid`=1");
$t1 = mysql_fetch_assoc($q);
$t2 = mysql_fetch_assoc($q);
непонятно чем $t1 отличается от $t2 и потерян $result = mysql_query($q);

PHP:
$q = "SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT COUNT(`id`) FROM `table2` WHERE `pid`=1";
$result=mysql_query($q);
while ($row=mysql_fetch_assoc($result)) {
    echo $row["userid"]; // поля из таблицы
}
 
Код:
$q = mysql_query("SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT COUNT(`id`) FROM `table2` WHERE `pid`=1");
$t1 = mysql_fetch_assoc($q);
$t2 = mysql_fetch_assoc($q);
непонятно чем $t1 отличается от $t2 и потерян $result = mysql_query($q);

Код:
$q = mysql_query("SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT COUNT(`id`) FROM `table2` WHERE `pid`=1");
[COLOR=#0000bb]$result [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]mysql_query[/COLOR][COLOR=#007700]([/COLOR]$q[COLOR=#007700]);[/COLOR]
[COLOR=#007700]while ([/COLOR][COLOR=#0000bb]$row [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]mysql_fetch_assoc[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$result[/COLOR][COLOR=#007700])) {
    echo [/COLOR][COLOR=#0000bb]$row[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]"userid"[/COLOR][COLOR=#007700]]; // поля из таблицы
    echo [/COLOR][COLOR=#0000bb]$row[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]"fullname"[/COLOR][COLOR=#007700]];
    echo [/COLOR][COLOR=#0000bb]$row[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]"userstatus"[/COLOR][COLOR=#007700]];
}[/COLOR]

а чем тебе не нравиться, $q вместо $result? :) Ты какой-то бред написал два mysql_query?!
PHP:
$query = mysql_query('SELECT * FROM `table` WHERE `id`=1 UNION ALL SELECT * FROM `table2` WHERE `pid`=1');
if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_assoc($query)) {
        // Твой код
    }
}

Для просмотра ссылки Войди или Зарегистрируйся
Notice that each SELECT statement within the UNION must have the same number of columns. The columns must also have similar data types. Also, the columns in each SELECT statement must be in the same order.
 
непонятно чем $t1 отличается от $t2 и потерян
Внимательно посмотри на sql запрос - результат его выполнения 2 строки, смысла в цикле while в таком случае просто нет!
 
Назад
Сверху