2014-10-30 1 views
0

Нужна помощь?Использование «ГДЕ» дважды с (случайным) MySQL

Это работает

$sql = " 
    SELECT * FROM 
     (SELECT * FROM $TableDir 
      WHERE dir_ranking = '1' 
      ORDER BY RAND() LIMIT 16) 
     x ORDER BY dir_date_listed ASC"; 

Он выбирает случайным образом из "$ TableDir", где рейтинг = 1 и пределы 16 записей

Но мне нужно, чтобы отфильтровать другой вариант. Мне нужно фильтровать "dir_approved = Y", а я попробовал этот

$sql = " 
    SELECT * FROM 
     (SELECT * FROM $TableDir 
      WHERE dir_ranking = '1' 
      ORDER BY RAND() LIMIT 16) 
     WHERE dir_approved = 'Y' x 
      ORDER BY dir_date_listed ASC"; 

И это

 $sql = " 
      SELECT * FROM 
       (SELECT * FROM $TableDir 
        WHERE dir_ranking = '1' AND WHERE dir_approved = 'Y' 
         ORDER BY RAND() LIMIT 16) 
       x ORDER BY dir_date_listed ASC"; 

Ни один из последних двух выше в результате каких-либо данных

Есть ли другая последовательность или способ, чтобы получить это работающих

ответ

1

Это не WHERE x = y WHERE a = b, формат WHERE x = y AND a = b. Это должно решить вашу проблему.

+1

Спасибо! оно работает ! не знаю почему я сделал это так! Я думаю, из-за (случайного), хотя я должен был повторить ГДЕ! – Cavemanharris

+1

Без проблем! Также мои извинения, я также заметил, что вы положили свой первый «WHERE» на внешний вид вашего подзапроса. Если '' WHERE' применяется к подзапросу, тогда это должно быть 'SELECT (yourColumns WHERE condition', тогда как ваш был' SELECT (yourColumns) WHERE condition' – Eilidh

 Смежные вопросы

  • Нет связанных вопросов^_^