0

1 つのクエリで 2 つのテーブルの結果をフェッチします。今、私は各テーブルに1つの行を持っていname = useridます. テーブル1のIDを印刷すると、これは機能せず、テーブル2のIDが印刷されました。つまり*、製品から選択してから、 voteid,useridvoteproduct を形成します。今、私は製品テーブルからユーザーIDを印刷する必要がありますが、私の結果はvoteproductからユーザーIDを印刷します。これを修正するには?ありがとう

私のコード:

$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
       }

編集:製品テーブルから選択*した場合、本当にすべてが必要です。(名前、価格、日付、カテゴリ、...)

4

3 に答える 3

3

select *特にSINGLEフィールドのみを要求しているように見える場合は、怠惰な方法です。あなたは店に走ったり、店の棚の在庫全体をつかんだり、家に持ち帰ったり、欲しかった1つのキャンディーバーを除いてすべてを捨てたりしません.

どうですか

SELECT product.userid
FROM ...
WHERE ...

必要な正確な単一フィールドのみを取得しますか?

于 2012-04-28T14:29:16.973 に答える
1
select p.userid as puserid, v.userid as vuserid ... FROM ' . PREFIX  . '_product p,' . PREFIX  . '_voteproduct v where ...

echo $row['puserid'];
于 2012-04-28T14:33:25.467 に答える
1

以下のように、各ユーザー ID をAS 個別に使用するために選択できます。

$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'];
于 2012-04-28T14:31:27.067 に答える