使用左连接查询

时间:2012-08-19 19:01:17

标签: mysql

我有这个查询,

$query = 'SELECT * FROM users where id ="'.$_SESSION['user_id'].'"'; 

我的问题是我不知道怎么离开加入另一张桌子......用另一个地方或“开”条款..

你可以帮我解释一下这个语法吗?

它应该像SELECT $query FROM users,retailer ON $query.user_id=retailer.user_id ....

"SELECT users.first_name, retailer.date
FROM users AS users
LEFT JOIN retailer AS retailer ON users.user_id=retailer.user_id
WHERE users.user_id=" . $_SESSION['user_id']

谢谢!

3 个答案:

答案 0 :(得分:1)

LEFT JOIN非常简单

对于你的例子:

$query = "SELECT u.*, r.*
FROM users AS u
LEFT JOIN retailer AS r ON u.user_id=r.user_id
WHERE u.user_id=" . $_SESSION['user_id']

“AS”关键字创建别名,因此无需为表“users”创建别名“users”。

其次,如果第二个表有可能与第一个表不匹配但仍需要显示该属性,则LEFT JOIN非常有用 - 如果找不到匹配项,则第二个表的属性将具有NULL值。

我不确定你的查询中是否需要LEFT JOIN。

答案 1 :(得分:0)

SELECT users.*, retailers.*  
FROM retailer 
LEFT JOIN users 
ON retailer.user_id=users.user_id

答案 2 :(得分:0)

另一种方法是:

$query = "SELECT u.*, r.*
FROM users u, retailer r
WHERE u.user_id=" . $_SESSION['user_id'] . "
AND u.user_id=r.user_id";

我注意到SO海报倾向于使用明确的JOIN语言,它是更符合标准还是仅仅是一种风格选择?我知道LEFT OUTER JOIN是必要的,所以这只是为了保持一致吗?