,表友誼具有id,username和friendusername。當用戶接受其他用戶爲朋友時,表中將保存1行記錄(不是2行)。我想隨機選擇15個用戶,並顯示他們的照片,MySQL代碼:mysql在數據庫中選擇具有AND問題的UNION
<?php
$query120 = "SELECT frenusername FROM friendship WHERE username='{$username2}' UNION SELECT username FROM friendship WHERE friendusername='{$username2}' AND RAND()<(SELECT ((15/COUNT(*))*10) FROM friendship) ORDER BY RAND() LIMIT 15";
$result120 = mysql_query($query120,$connection) or die (mysql_error());
confirm_query($result120);
while($userinfo120 = mysql_fetch_array($result120)){
$frenusername= $userinfo120['frenusername'];
$username = $userinfo120['username']; //this hold empty value, why?
$query121 = "SELECT picturemedium FROM users WHERE username='{$frenusername} OR username='{$username}' LIMIT 1";
//display picture
}
}
?>
我的問題1:爲什麼 持有$username
空值?
我的問題2: 聲明AND RAND()<(SELECT ((15/COUNT(*))*10) FROM friendship) ORDER BY RAND() LIMIT 15"
是從表中隨機選擇15條記錄。據說我需要把它寫在兩個UNION語句上嗎? (這意味着我需要寫兩次)。如果是這樣,它將顯示30條記錄而不是15條記錄。我應該改變它爲每個變成8/Count LIMIT 8
?或者是否有其他方式避免重複AND語句?
在OP的情況下,同一個用戶可以作爲'username'或'friendusername'存儲在'friendship'中,而OP想要從兩個子集中選擇隨機行,因爲它們都包含不同的'$ username2'朋友。所以UNION(或者說,UNION ALL)是必要的。 –
是的,我需要聯盟,因爲我需要選擇'friendusername'或'用戶名'兩個(不僅'friendusername')。 – zac1987
@ zac1987,查看更新的答案 – Dirk