2011-10-27 113 views
-1

下面的查詢有效,但我似乎有一個奇怪的錯誤。 users表中的第一個用戶可以看到所有其他用戶與其關聯的所有幫助問題。但數據庫中的第二個用戶只能通過他們在表中的第一個人獲得幫助問題,並且該查詢會忽略該表中其他人對第二個人的結果。查詢正確排序,但沒有正確顯示所有結果

我猜它與括號有關嗎?

代碼:

//Unseen 
$variis = "Need Help"; 
$myid = "This is the user's id;" 

$sql = "select car_help.car_id, agent_names.agent_name, help_box.status, 
car_help.why_car, car_help.date_time_added, car_help.just_date, 
car_help.type, agent_names.agent_id 
from car_help LEFT JOIN agent_names on car_help.agent_whois = agent_names.agent_id 
where agent_names.system_id = '$myid' and car_help.system_id='$myid' 
and added_by <> '$myid' and help_box.status = '$variis' 
UNION 
select magazine_help.note_id, agent_names.agent_name, help_box.status, 
magazine_help.note_name, magazine_help.date_time_added, 
magazine_help.just_date, magazine_help.type, agent_names.agent_id 
from magazine_help LEFT JOIN agent_names on 
magazine_help.agent_id = agent_names.agent_id 
where agent_names.system_id='$myid' and 
magazine_help.system_id = '$myid' and added_by <> '$myid' 
and help_box.status = '$variis' 
UNION 
select motorcycle_help.rand_id, agent_names.agent_name, 
help_box.status, motorcycle_help.rand_name, motorcycle_help.date_time_added,  
motorcycle_help.just_date, motorcycle_help.type, agent_names.agent_id 
from motorcycle_help LEFT JOIN agent_names ON 
motorcycle_help.by_who = agent_names.agent_id 
where agent_names.system_id = '$myid' and 
motorcycle_help.system_id='$myid' and added_by <> '$myid' 
and help_box.status = '$variis' 
UNION 
select mobile_questions.bal_test_id, agent_names.agent_name, 
help_box.status, mobile_questions.bal_why, mobile_questions.date_time_added, 
mobile_questions.just_date, mobile_questions.type, agent_names.agent_id 
from mobile_questions LEFT JOIN agent_names ON 
mobile_questions.agent_who_ordered = agent_names.agent_id 
where agent_names.system_id = '$myid' and 
mobile_questions.system_id='$myid' and added_by <> '$myid' 
and help_box.status = '$variis' 
ORDER BY date_time_added DESC LIMIT $startrow, 20"; 

$result = mysql_query($sql); 

$query = mysql_query($sql) or die ("Error: ".mysql_error()); 


if ($result == "") 
{ 
echo ""; 
} 
echo ""; 


$rows = mysql_num_rows($result); 

if($rows == 0) 
{ 
print(""); 

} 
elseif($rows > 0) 
{ 
while($row = mysql_fetch_array($query)) 
{ 

$row1 = $row['row_name']; 


print("$row1"); 
} 

} 

回答

1
where agent_names.system_id = '$myid' and 
motorcycle_help.system_id='$myid' and added_by <> '$myid' 
and help_box.status = '$variis' 

只返回數據,如果所有的true。如果第二個人在所有三個字段中沒有匹配的ID,它將不會返回您的期望。如果$variis爲空,則創建一個應該替換調用變量的默認ID。可能需要一個或一個聲明。如果你打算使用回聲棒,print可以做同樣的事情。

+1

它實際上工作。我從每個查詢中刪除了where agent_names.system_id ='$ myid'。選擇你的答案,因爲你是唯一一個至少試圖回答它的人。謝謝。 – AAA