我在一个查询中获取两个表结果。现在我在每个表中都有一行name = userid
。当我打印表一的id时,这不起作用并打印表二的id。即,我从产品中选择*
,然后{user} = {user} = userid = {user}现在我需要从产品表中打印userid,但我的结果是来自voteproduct的打印用户ID。怎么解决这个问题?感谢
我的代码:
voteid,userid
编辑:如果我从产品表中选择了$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
}
,那么我需要全部。 (名称,价格,日期,类别......)
答案 0 :(得分:3)
select *
是一种懒惰的做法,特别是当你看起来只是要求一个单一的字段时。你不跑到商店,抓住整个商店的货架,把它带回家,然后扔掉一切,除了你想要的一个糖果棒。
怎么样
SELECT product.userid
FROM ...
WHERE ...
所以你只得到你需要的确切单个字段?
答案 1 :(得分: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'];
答案 2 :(得分:1)
select p.userid as puserid, v.userid as vuserid ... FROM ' . PREFIX . '_product p,' . PREFIX . '_voteproduct v where ...
echo $row['puserid'];