MySQL WHERE syntax lack of knowledge
This works:
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.d开发者_JAVA百科istr_id,
c.title
FROM
s,
c WHERE c.id = s.content_id;
This doesn't:
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.distr_id,
c.title,
j.featured
FROM
s,
c WHERE c.id = s.content_id,
j WHERE j.contentid = s.content_id;
What am I doing wrong? It should be something dead simple, but I just can't see it. Been searching for an answer for a two-three hours on and off.
FROM s,c,j WHERE c.id = s.content_id AND j.contentid = s.content_id;
Your implicit joins are out of order. All tables must be in the FROM
clause, comma-separated. The join relationships are all specified in one WHERE
clause.
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.distr_id,
c.title,
j.featured
FROM
s, c, j
WHERE
c.id = s.content_id,
AND j.contentid = s.content_id;
But it would be better to use explicit JOIN
s instead. This is the preferred syntax for modern code.
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.distr_id,
c.title,
j.featured
FROM
s JOIN c ON c.id = s.content_id
JOIN j ON j.contentid = s.content_id;
You are trying to do an implicit join, which looks like this
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.distr_id,
c.title,
j.featured
FROM s, c, j
WHERE c.id = s.content_id,
AND j.contentid = s.content_id;
You are confusing your syntax with an explicit join, this is the same thing:
SELECT
s.content_id, s.cover, s.orig_price, s.sale_price, s.exp_date, s.distr_id,
c.title,
j.featured
FROM s
INNER JOIN c ON c.id = s.content_id
INNER JOIN j ON j.contentid = s.content_id;
The issue is the multiple WHERE clauses. Try changing the end to:
FROM
s, c, j
WHERE
c.id = s.content_id AND j.contentid = s.content_id;
精彩评论