2012-04-28 125 views
0

我在一個查詢中獲取兩個表結果。現在我在每張桌上都有一排name = userid。當我打印表1的ID時,這不起作用並且打印表2的ID。即我從產品中選擇*,然後選擇voteid,userid形式voteproduct where userid = $ userid;現在我需要從產品表中打印用戶標識,但是我的結果是從voteproduct打印用戶標識。如何解決這個問題?感謝從一個查詢中的兩個表中打印結果

我的代碼:

$sql = 'SELECT * FROM ' . PREFIX . '_product,' . PREFIX . '_voteproduct WHERE ' . PREFIX . '_voteproduct.voteid = ' . PREFIX . '_product.id AND ' . PREFIX . '_voteproduct.userid = "' . $userid . '" ORDER BY name ' . $pages->limit .' '; 

    $db->query($sql) or error ('ERROR', mysql_error()); 
      $result = $db->query ($sql); 
      if($db->numrows($result)>0){ 
      while ($row = $db->fetcharray($result)) 
     { 

    echo $row['userid']; // PROBELM THIS PRINTED USERID FROM VOTEPRODUCT I NEED PRINT USER ID FROM PRODUCT 
     } 

編輯:如果我從我的產品表中選擇*,真的我需要的所有。 (名稱,價格,日期,類別,...)

回答

1

您可以依次用AS選擇每個用戶ID分別使用它們像下面

$sql = 'SELECT p.userid as pid, vp.userid as vpid, ... FROM ' . PREFIX . '_product AS p,' . PREFIX . '_voteproduct AS vp WHERE vp.voteid = p.id AND vp.userid = "' . $userid . '" ORDER BY name ' . $pages->limit .' '; 

和使用;

echo $row['pid']; 
+0

我看到這個錯誤:'字段列表中的未知列'p.userid'。你閱讀我編輯的問題? – BBKing 2012-04-28 15:02:08

+0

我忘了別名表名,我更新了sql,現在可以試試 – 2012-04-28 15:07:40

+0

新錯誤:'where子句中未知列'portals_voteproduct.voteid' – BBKing 2012-04-28 15:13:20

3

select *是一種懶惰的做生意的方式,尤其是當它看起來像只要求一個SINGLE字段。你不會跑到商店,搶到整個商店的貨架庫存,把它帶回家,然後扔掉一切,除了你想要的一個糖果棒。

如何

​​

,所以你只能得到確切的單場你需要什麼?

+0

+1愛比喻:) – mellamokb 2012-04-28 14:30:02

+0

我同意。偉大的比喻! – Mansfield 2012-04-28 14:32:41

+0

@Marc乙:你比喻是正確的+1當我需要一行產品表格,但我需要產品表(姓名,日期,價格等)的所有行。 – BBKing 2012-04-28 14:42:54

1
select p.userid as puserid, v.userid as vuserid ... FROM ' . PREFIX . '_product p,' . PREFIX . '_voteproduct v where ... 

echo $row['puserid']; 
相關問題