说我有3张桌子:
人
person_company:
company_address:
我有一个如此的mysql查询:
SELECT * FROM person
JOIN (
person_company,
company_address
)
ON (
person.person_id = person_company.person_id
&& person_company.company_id = company_address.company_id
)
然而,当我使用查询时,我在第一个表中的第一个条目重复约20次,然后在那之后还有几个“团块”。问题是,这会产生一个不正确的行,就像John Smith对公司A,B,C和D不起作用。
我认为这个问题可能与我所做的我不知道的假设有关。
答案 0 :(得分:1)
你的JOIN语法有点奇怪,你可以通过一次连接一个表来获得更好的结果。我还在表中添加了别名,但如果你多次加入同一个表,那么它不是100%需要的。
SELECT
-- Probably best too select specific fields here as, for example,
-- person_id exists in both person and person_company
p.person_id,
p.first_name,
p.last_name,
c.company_id,
c.company_address_id,
c.address_id
FROM person AS p
-- First up join person_company to person as your query indicates an n:1 there
INNER JOIN person_company AS pc
ON pc.person_id = p.person_id
-- Next join company_address to person_company, again as your query indicates n:1
INNER JOIN company_address ca
ON ca.company_id = pc.company_id
如果仍然无效,则问题出在您的数据而不是查询中!
答案 1 :(得分:1)
我无法识别您的JOIN
语法。这是如何工作的?
SELECT *
FROM person
JOIN person_company ON person.person_id = person_company.person_id
JOIN company_address ON person_company.company_id = company_address.company_id