2013-07-21 5 views
0

У меня есть база данных SQL с тремя таблицами внутри называемых ...Возврат случайного результата из трех таблиц SQL

Fruit Name 
Fruit Color 
Fruit Price 

Я пытаюсь вернуть случайный результат от каждого из этих трех таблиц, чтобы дать мне, например. ...

Apple - Green - $10 

в настоящее время я делаю это, выполнив следующие действия PHP три раза (с другой таблицей для каждого)

$result = mysqli_query($con,"SELECT * FROM fruitname"); 
while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['fruitname']; 
    } 

Это прекрасно работает, но у меня такое чувство, что я ошибаюсь. Есть ли способ сделать это как одну команду вместо трех?

+1

Это не случайно –

ответ

2

Если вы действительно хотите случайной строки, вы можете сделать это следующим образом:

select * 
from (select * from FruitName order by rand() limit 1) fn cross join 
    (select * from FruitColor order by rand() limit 1) fc cross join 
    (select * from FruitPrice order by rand() limit 1) fp 

Это возвращает все поля в одной строке.

Отметьте, что a random строка очень отличается от произвольной строка. Случайная строка действительно означает, что каждая строка имеет равные шансы на выбор. Произвольная строка просто неопределенная. Первая строка в select без order by является произвольной, но определенно не случайной.