2011-03-30 93 views
0

我很頭疼加入我的桌子。目前我用這種方式我如何通過訂單加入兩張桌子

<?php 
$result = $db->query("SELECT COUNT(*) AS rows, ad_userid 
FROM ads 
GROUP BY ad_userid 
ORDER BY rows DESC 
LIMIT 5 
"); 
while ($top = $db->fetch($result)) { 
    $selectuser = $db->query("SELECT * 
         FROM users 
         WHERE user_id='".intval($top['ad_userid'])."' 
         "); 
    $user = $db->fetch($selectuser); 
?> 
<li><a href="<?php echo $url;?>/user/<?php echo $user['user_id']; ?>/"><?php echo $user['user_name'].' '.$top['rows']; ?></a></li> 
<?php } ?> 

結果很好,但讓我知道一個簡單的方法來加入此表。

回答

1

嘗試用子查詢:

SELECT * 
FROM (
    SELECT COUNT(*) AS rows, ad_userid 
    FROM ads 
    GROUP BY ad_userid 
    ORDER BY rows DESC 
    LIMIT 5 
) AS t1 LEFT JOIN users AS t2 ON t2.user_id = t1.ad_userid 

UPDATE(@Marc B) 從MySQL的文檔。

有一些錯誤只適用於子查詢 。本節介紹 他們。 ...不支持子查詢 語法:

ERROR 1235(ER_NOT_SUPPORTED_YET) SQLSTATE = 42000消息= 「這 的MySQL版本尚不支持 'LIMIT & IN/ALL/ANY/SOME子查詢'」 這意味着該格式如下 的陳述還不能正常工作:從T1

SELECT *其中S1 IN(SELECT S2 FROM T2 ORDER BY S1 LIMIT 1)

這CORRE ct Mark,LIMIT在子查詢中不受支持,但僅當在IN/ALL/ANY/SOME中使用時...您可以在FROM子句中自由使用它。

我剛剛寫了這種查詢幾個小時前,它似乎工作正常。

+0

MySQL在子查詢中不支持LIMITS。 – 2011-03-30 20:30:43

+0

謝謝你的工作。 @Marc B看起來像它支持:) – wow 2011-03-30 20:36:04