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

Тема в разделе "Как сделать...", создана пользователем Sunday, 13 июн 2012.

  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    Требуется сделать две выборки, но с разными условиями. 1-е условие точно определено, а второе - это просто выборка случайных строк.
    Возможно ли это сделать одним запросом?
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Конкретики хотелось бы. На поставленный в такой форме вопрос можно ответить да, возможно. Но подобный ответ не принесет решения вопроса.
     
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    Будет запрос с джоинами, в котором будут выбираться посты за последнее время, т.е. самые свежие с лимитом каким-нибудь, скажем 5-10. Сделал я выборку и вывел их. Затем мне нужно сделать на сайте еще один блок, в котором будут выводиться те же посты, но выборка должна быть не по дате, как в 1-м случае, а случайным образом, с тем же лимитом. Вот и хотелось бы уместить всё в один запрос. задался вопросом - возможно ли такое.
     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    как вариант UNION ALL
     
    Sunday нравится это.
  5. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    737
    Симпатии:
    324
    Разобраться с UNION - пол дела, но не могу найти примеры, как выводить результат после такого запроса?
     
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Результаты выводятся аналогично результатам из обычного запроса. В качестве теста можно запрос ввести в phpmyadmin или подобную программулину, чтобы посмотреть какие есть названия столбцов, из которых планируете выводить данные.
     
    Sunday нравится это.
  7. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    В качестве примера сойдет:
    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);
    Рекомендую, также, почитать данный материал Перейти по ссылке
     
    Sunday нравится это.
  8. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    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"]; // поля из таблицы
    }
     
  9. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    а чем тебе не нравиться, $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)) {
            
    // Твой код
        
    }
    Перейти по ссылке
     
  10. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.365
    Внимательно посмотри на sql запрос - результат его выполнения 2 строки, смысла в цикле while в таком случае просто нет!
     
    dandandan нравится это.