2016-12-16 11 views
0

私はメンターのリストを持つテーブルを持っています。メンターの中には評価があり、そうでないものもあります。現在、私の質問はメンターの基本情報と評価情報を集めています。クエリでは評価情報が収集されているため、評価なしのメンターは表に表示されず、評価付きのメンターのみが表示されます。これを回避する方法はありますか?MySQLクエリがテーブル内のすべての結果を表示していません。 INNER JOIN conflict

$sql = "SELECT users.id, users.firstName, users.lastName, users.username, users.gender, users.avatar, mentor.industry, mentor.city, mentor.price, mentor.language, users.country, mentor.mentor_enabled, AVG(rating.rate) AS average, COUNT(rate) AS count FROM users INNER JOIN mentor ON users.id = mentor.id INNER JOIN rating ON mentor.id = rating.owner WHERE mentor.mentor_enabled='1' GROUP BY users.id, users.username ORDER BY RAND()"; 
$res = mysqli_query($db,$sql) or die(mysqli_error());    
if (mysqli_num_rows($res) > 0) { 
    while ($row=mysqli_fetch_assoc($res)){ 
     $id = $row['id']; 
     //NAMING VARIABLES 
    } 
} else{ 
    echo "no data"; 
} 

答えて

0

あなたはすべての行を取得するにはleft outer join代わりinner joinの使用する必要があり、例えば:あなたはただ驚くばかりです

SELECT users.id, users.firstName, users.lastName, users.username, users.gender, users.avatar, mentor.industry, mentor.city, mentor.price, mentor.language, users.country, mentor.mentor_enabled, AVG(rating.rate) AS average, COUNT(rate) AS count 
FROM users LEFT OUTER JOIN mentor ON users.id = mentor.id 
INNER JOIN rating ON mentor.id = rating.owner 
WHERE mentor.mentor_enabled='1' 
GROUP BY users.id, users.username 
ORDER BY RAND() 
+0

は、ここに私のクエリです!私は何日も試してみることにしていて、左外部の参加が私の心を救った!どうもありがとうございます!これは素晴らしい学習体験であり、私はより多くの結合を研究したいと思っています!ありがとうございました!私はできるだけ早くあなたに答えさせましょう! :D:D – Millica

+0

'LEFT JOIN x WHERE x.n ...'は 'INNER JOIN x ... 'と同じです。 – Strawberry

関連する問題