2011-01-06 59 views
2

通常我這樣做的方式來獲得2個表如何加入我的MySQL表

<?php 
$select = "SELECT * FROM question ORDER BY id DESC LIMIT 0,20"; 
$query = $db->query($select); 

while ($fetch = $db->fetch($query)) { 
    $uselect = "SELECT * FROM user WHERE id='".intval($fetch['q_user'])."' "; 
    $uquery = $db->query($uselect); 
    $ufetch = $db->fetch($uquery); 
    ?>  

    Title : <?php echo $fetch['q_title']; ?> 
    User : <?php echo $ufetch['u_id']; ?> 

    <?php 
} 
?> 

有有一個簡單的方法來加入這一個?

回答

1

嗯,你可以這樣做:

SELECT * 
FROM question 
JOIN user ON question.q_user = user.id 
ORDER BY question.id DESC 
LIMIT 0, 20 

有一件事我會建議,明確列出列,因爲任何重疊(Question.id和user.id)會曖昧。簡單地做SELECT question.id, user.id AS uid, ...

0
select * from question left join user on user.id = question.q_user order by question.id desc limit 0,20; 
0
SELECT * FROM question 
LEFT JOIN user ON user.id = question.q_user 
ORDER BY question.id DESC LIMIT 0,20 
0

這個查詢應該是正確的:

create table questions 
(
    question_id bigint unsigned auto_increment primary key, 
    user_id bigint unsigned not null, 
    title varchar(255), 
)engine=innodb; 

create table users 
(
    user_id bigint unsigned auto_increment primary key, 
    name varchar(255) not null 
)engine=innodb; 

// your query 
select q.* from questions q 
inner join users u where u.user_id = q.user_id 
order by q.question_id desc 
0

是的,我假設你是想返回問了一個問題的用戶,因爲你存儲q_user然後你需要做一些SQL,如:

「SELECT q.q_title,u.u_id FROM question q JOIN user u ON(q.q_user = u.u_id)」

您可以將此限制等應用於此查詢。