[英]Do I need a join?
I have 3 tables: products, products_description, products_to_categories 我有3个表:产品,products_description,products_to_categories
Here is my sql: 这是我的sql:
SELECT `products`.`products_model`,
`products_description`.`products_name`
FROM products,
products_description,
products_to_categories
WHERE `products`.`products_id` = `products_description`.`products_id` =
`products_to_categories`. `products_id`
AND `products_to_categories`.`categories_id` <> '91'
ORDER BY `products`.`products_model` DESC
all three tables have products_id as the primary key and I am trying to link all three based on that. 所有这三个表都将products_id作为主键,我正在尝试基于此链接所有这三个表。 I think I need a join because I cant seem to make all three just be equal in one statement?
我认为我需要加入,因为我似乎无法使所有三个在一个陈述中都相等?
You could do it with a JOIN but if you wanna use a Where statement that's fine, but you'll have to use AND to make it happen 你可以用JOIN来做,但是如果你想使用Where语句那么好,但是你必须使用AND来实现它
SELECT `products`.`products_model`, `products_description`.`products_name`
FROM products, products_description, products_to_categories
WHERE `products`.`products_id` = `products_description`.`products_id`
AND `products`.`products_id`= `products_to_categories`.`products_id`
AND `products_to_categories`.`categories_id` <> '91'
ORDER BY `products`.`products_model` DESC
select p.`products_model`,
pd.`products_name`
from products p
inner join products_description pd on p.`products_id` = pd.`products_id`
inner join products_to_categories pc on p.`products_id` = pc.`products_id`
where pc.`categories_id` <> '91'
order by p.`products_model` desc
Try 尝试
SELECT products_model, products_name
FROM products
NATURAL JOIN products_description
NATURAL JOIN products_to_categories;
The more modern JOIN
is generally preferred to the old implicit join syntax anyway. 无论如何,更现代的
JOIN
通常优先于旧的隐式连接语法。 It presents a much more readable picture of how the tables relate, and allows a clearer WHERE
clause by including only the actual limiting condition in WHERE
. 它提供了有关表如何关联的更易读的图片,并且通过仅在
WHERE
包括实际的限制条件而允许使用更清晰的WHERE
子句。
SELECT
`products`.`products_model`,
`products_description`.`products_name`
FROM
products
JOIN products_description ON products.product_id = products_description.product_id
JOIN products_to_categories ON products.product_id = products_to_categories.product_id
WHERE `products_to_categories`.`categories_id` <> '91'
ORDER BY `products`.`products_model` DESC
Try not to use commas in your FROM clause. 尽量不要在FROM子句中使用逗号。 It's a hold-over from a much older version of the sql standard, and not really considered a good practice any more.
它是sql标准的更旧版本的延续,并不再被认为是一个好习惯。 Just about everywhere you use
TableA,TableB
syntax right now you should learn to use TableA INNER JOIN TableB ON
instead. 几乎在任何地方你使用
TableA,TableB
语法,你现在应该学习使用TableA INNER JOIN TableB ON
。
In this case, though, you could get away with it like this: 但是,在这种情况下,你可以像这样逃避它:
SELECT `products`.`products_model`, `products_description`.`products_name`
FROM products, products_description, products_to_categories
WHERE `products`.`products_id` = `products_description`.`products_id`
AND `products`.`products_id` = `products_to_categories`. `products_id`
AND `products_to_categories`.`categories_id` <> '91'
ORDER BY `products`.`products_model` DESC
But again, you really should learn to write that like this: 但是,你真的应该学会这样写:
SELECT `products`.`products_model`, `products_description`.`products_name`
FROM products
INNER JOIN products_description ON products.products_id = `products_description`.`products_id`
INNER JOIN `products_to_categories` ON `products_to_categories`.`products_id` = `products`.`products_id`
WHERE `products_to_categories`.`categories_id` <> '91'
ORDER BY `products`.`products_model` DESC
SELECT `products`.`products_model`, `products_description`.`products_name`
FROM products, products_description, products_to_categories WHERE products
. FROM产品,products_description,products_to_categories
products
。 products_id
= products_description
. products_id
= products_description
。 products_id
AND products_to_categories
. products_id
AND products_to_categories
。 products_id
= products
. products_id
= products
。 products_id
AND products_description
. products_id
AND products_description
。 products_id
= products_to_categories
. products_id
= products_to_categories
。 products_id
products_to_categories
. products_id
products_to_categories
。 products_id
AND products_to_categories
. products_id
AND products_to_categories
。 categories_id
<> '91' ORDER BY products
. categories_id
<>'91'ORDER BY products
。 products_model
DESC products_model
DESC
try this i think it work better like your query 试试这个,我认为它像您的查询一样更好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.