2016-09-25 108 views
0

首先,我對標題中的粗俗術語表示歉意。mysql,1個表的where條件加上另一個表的不同where條件

<? if ($thisguy == "noob") { echo("bear with me"); } ?> 

我有兩個表:

一個 「評級」(行:產品,用戶評價,補充),其中user = $thisuser[id]

和一個 「產品」(ID,名稱)在哪裏product.id = rating.product

我已經廣泛閱讀了關於連接(內部,外部,左邊,右邊...)的內容,並且我被卡住了。

我需要所有信息在哪裏Product.id = ratings.product and user = $thisuser[id]在一個數組中。

我使用這個:

$result = mysql_query("SELECT ratings.product, ratings.user, ratings.rating, ratings.added FROM ratings INNER JOIN products ON products.id = ratings.product AND user = $THISUSER[id]"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $product = $row['product']; 
    $user = $row['user']; 
    $rating = $row['rating']; 
    $added = $row['added']; 
    $pid = $row['id']; 
    $pname = $row['name']; 
    } 
print("$user, $rating, $added, $THISUSER[id], $pname, $pid"); } 

這將產生所有的收視率表(但只有一個實例),並沒有從產品表...我已經試過這100不同的方式不無濟於事。任何幫助將不勝感激!在我身上輕鬆一下。 * winces

+0

你能與表之間的關係一起提供你的表結構。 – Naruto

+0

嘗試做一個'LEFT JOIN'。如果您從「產品」表中選擇列,您是否看到所有「NULL」值? –

+0

@火影忍者:我道歉。這是我在此的頭一篇博文。我不知道如何提供結構。唯一的關係是products.id和ratings.product @ Tim Biegeleisen:我知道。它打印的地方,我有所有的信息,但產品信息。只有2個逗號爲空的空間 – user3502802

回答

0

確保您所提供的查詢是正確的,因爲你的描述包含的代碼爲不同的表名的數據庫名稱你做了什麼。

注意:您僅選擇了評估表,並且沒有選擇產品表和我的代碼,我從產品表中選擇了產品名稱。

你必須使用ON條件與WHERE一起,這樣當你使用JOIN query這將是完美的。由於加入QUERY的語法就是這樣產生的。

您可以在ON中提供比較值並在WHERE中檢查值,以便您的數據看起來符合您的期望。

JOIN QUERY將在您的情況下看起來像這樣。

$query = "SELECT rating.product,rating.user,rating.rating,product.name FROM rating INNER JOIN products ON products.id = rating.product WHERE rating.user ='".$thisuser['id']."'"; 
+0

這也沒有工作。只有這個用戶被打印 – user3502802

+0

我得到了這個工作!但在應該有多個時,它仍然只顯示一個結果。有什麼我忘記了嗎? – user3502802

+0

爲了顯示循環外的所有值,需要將該值存儲爲數組,然後可以在循環外部打印該變量,以便顯示所需的所有值。否則,你可以在循環內部回顯語句,以便它顯示所有值,如果它也有多個值的話。 –

0
SELECT ratings.product, ratings.user, ratings.rating, ratings.added FROM ratings INNER JOIN products ON products.id = ratings.product WHERE ratings.user = $THISUSER[id] 

試試這個,在最後一節中使用WHERE而不是AND。

+0

這隻打印$ thisuser [id],其他都是空的 – user3502802

1

你是不是從產品選擇表中的任何列,改變你的選擇一樣

$result = mysql_query("SELECT ratings.product, ratings.user, ratings.rating, ratings.added, products.id, products.name FROM ratings INNER JOIN products ON products.id = ratings.product where ratings.user = $THISUSER[id]"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $product = $row['product']; 
    $user = $row['user']; 
    $rating = $row['rating']; 
    $added = $row['added']; 
    $pid = $row['id']; 
    $pname = $row['name']; 
    } 
print("$user, $rating, $added, $THISUSER[id], $pname, $pid"); } 
0

確保$ THISUSER [id]包含有效值。

嘗試分配VAR這樣

$acc_user = $THISUSER[id]; 

"SELECT ratings.product, ratings.user, ratings.rating, ratings.added 
FROM ratings 
INNER JOIN products ON (products.id = ratings.product 
       AND ratings.user = $acc_user) " 

,您可以用在子句中使用的,並最終把裏面的()

+0

這隻給我$ acc_user id#而沒有別的 – user3502802