两个表,左连接。为方便表1和表2。
表1包含人员及其当前状态的列表,表2是他们所有的"邀请"。所有即时尝试作为加入的一部分,都会在列表中显示所有当前"人员"然后是LATEST邀请状态(来自表2),所以从表2返回一行。
我有一切正常工作......但是重复它,例如,如果一个人有多个邀请,它会将它们放在列表中两次。我只是想把它限制在
$sql = "SELECT table1.fieldname as table1fielname table2.fieldname [more fields]
FROM xxx
LEFT JOIN xxx on table1.sharedid=table2.sharedid
WHERE XXX LIMIT 1 ";`
显然,限制1并没有做到它应该做的事情。我试过在括号中添加额外的select语句,但说实话它只是打破了所有内容,而且我根本不是专家。
答案 0 :(得分:0)
我也不是专家,但我会尝试。你试过使用DISTINCT吗?
例如:
SELECT DISTINCT column_name1,column_name2
FROM table_name; [...]
通常删除双重匹配。
以下是链接: http://www.w3schools.com/sql/sql_distinct.asp https://www.techonthenet.com/oracle/distinct.php
答案 1 :(得分:0)
提供示例数据。并使用好的表和列名称。例如:
(这将返回满足连接的所有行):
WITH people(ppl_id,ppl_name,status) AS (
SELECT 1,'Arthur','active'
UNION ALL SELECT 2,'Tricia','active'
), invites(ppl_id,inv_id,inv_date) AS (
SELECT 1,1, DATE '2017-01-01'
UNION ALL SELECT 1,2, DATE '2017-01-07'
UNION ALL SELECT 1,3, DATE '2017-01-08'
UNION ALL SELECT 2,1, DATE '2017-01-01'
UNION ALL SELECT 2,2, DATE '2017-01-08'
)
SELECT
*
FROM people
JOIN invites USING(ppl_id)
ORDER BY 1
;
ppl_id|ppl_name|status|inv_id|inv_date
1|Arthur |active| 1|2017-01-01
1|Arthur |active| 3|2017-01-08
1|Arthur |active| 2|2017-01-07
2|Tricia |active| 2|2017-01-08
2|Tricia |active| 1|2017-01-01
但我们只希望'Arthur'与'2017-01-08'和'Tricia'与'2017-01-08'。
对于任何支持ANSI 99的数据库,您可以尝试使用包含每个“人员ID”的最新邀请日期的临时表,并将该临时表与邀请表一起加入。我们将该表称为newest_invite_date
,并且显然,它完成了我们期望它做的事情:
WITH people(ppl_id,ppl_name,status) AS (
SELECT 1,'Arthur','active'
UNION ALL SELECT 2,'Tricia','active'
), invites(ppl_id,inv_id,inv_date) AS (
SELECT 1,1, DATE '2017-01-01'
UNION ALL SELECT 1,2, DATE '2017-01-07'
UNION ALL SELECT 1,3, DATE '2017-01-08'
UNION ALL SELECT 2,1, DATE '2017-01-01'
UNION ALL SELECT 2,2, DATE '2017-01-08'
), newest_invite_date(ppl_id,inv_date) AS (
SELECT ppl_id,MAX(inv_date)
FROM invites
GROUP BY ppl_id
)
SELECT
people.ppl_id
, people.ppl_name
, people.status
, newest_invite_date.inv_date
FROM people
JOIN newest_invite_date USING(ppl_id)
ORDER BY 1
;
ppl_id|ppl_name|status|inv_date
1|Arthur |active|2017-01-08
2|Tricia |active|2017-01-08
这是你在找什么?
快乐的比赛...... Marco the Sane