2013-06-18 12 views
0

我有一個查詢返回活動和非活動帖子的數量以及特定帖子的詳細信息。以下是查詢訪問部分子查詢以在PHP服務器中構建HTML

$fetch = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM 
(SELECT DISTINCT propertyID, streetAddress, city FROM residence.property 
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' AND activePosting = '0') inactposts, 
    (SELECT FOUND_ROWS() AS 'inactiveCount') inact, 
(SELECT DISTINCT propertyID, streetAddress, city FROM residence.property 
INNER JOIN contact ON residence.contact.ContactID = residence.property.ContactID 
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' AND activePosting = '1') actposts, 
    (SELECT FOUND_ROWS() AS 'activeCount') act;") 
or die('<li class=error>Ooops</li>'.mysql_error()); 

該查詢在我的網頁中起作用。在MySQL工作臺它返回的東西看起來像:

propID address  city  inactCount propID address  city  actCount 
366 110 Main Street Perinton  1  352 3 Some Place Perinton  3 
366 110 Main Street Perinton  1  353 5 Joe Place Perinton  3  
366 110 Main Street Perinton  1  356 111 Main  Perinton  3 

對我來說,問題是兩個部分子查詢結果不具有標識(即我能找到),所以在HTML所構建的PHP服務器,我無法將列表分成非活動帖子(inactposts)和活動帖子(actposts)。目前HTML 只有返回活動帖子的列表。我試圖把「inactposts」,臨時表的名稱,在不同的地方,我只是得到錯誤信息

這裏的PHP做的HTML結構:

if(mysql_num_rows($fetch)) { 
while ($row = mysql_fetch_array($fetch)) { 
    $inactiveCount = $row["inactiveCount"]; 
    $activeCount = $row["activeCount"]; 
    $storedStreetAddress = $row["streetAddress"]; 
    $storedCity3 = $row['city3']; 
    $error_NumberInactives = "<ul>You have $activeCount active posts and $inactiveCount inactive posts.</ul>"; 
    $error_List_Actives = "<li>Your $activeCount active posts are:</li>"; 
    $errorMessages[0] = $error_NumberInactives; 
    $errorMessages[1] = $error_List_Actives; 
    $errorMessages[] = "<li> $storedStreetAddress, $storedCity3 </li>"; 
}else{ //error message} 

我如何構建單獨的列表這個查詢的子查詢結果?或者我需要一個不同的查詢?

回答

0

如果您需要單獨的行,您將需要另一個沒有聚合的查詢。 或者,在一個查詢中選擇所有的職位(有詳細說明),並解析結果在PHP來算有效和無效的數量:

SELECT DISTINCT propertyID, streetAddress, city, activePosting FROM residence.property 
INNER JOIN contact ON residence.contact.ContactID = residence.property.ContactID 
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' 

附:我假設你已經在提供的代碼之外清理了你的輸入,否則你需要這樣做。

+0

當前查詢獲取所有單獨的行,並且HTML部分顯示它們,即一個組。你確定沒有辦法在查詢中分配2個組 - 例如,使用AS或GROUP,或者PHP中可以識別響應的兩部分的東西?我打了一堵牆,不知道要尋找答案,但似乎可以通過一些標籤/命名來解決問題。再次,我對此很新穎。 –

+0

我已成功通過在關閉括號後放置AS inactposts和AS actpos來命名2個子查詢。查詢起作用。現在我需要一些PHP來識別兩個已命名的行組。 。 。 。或類似的東西。 –

+0

我可能是錯的,但我相信,因爲你在一次php調用中將多個查詢(每個分號結束查詢)串在一起,你只會得到最終查詢的結果(活動結果)。將'inactive'查詢放入自己的調用'$ fetch2'中,並分別運行while循環。 – cryocide

相關問題