2010-03-15 6 views
0

У меня есть база данных MySql. SQL SELECT Join?

Существует таблица с продуктами и заказами с структурой:

  • продукты: product_id, имя, manufacturers_id
  • заказов: orders_id, product_id, количество

Теперь я хотите получить все заказы (показывать только те продукты, в которых производитель products_id = 1). Я пробовал:

SELECT 
orders.orders_id, 
orders.product_id 
FROM products, orders 
WHERE products.manufacturers_id = 1 
GROUP BY orders_id 
ORDER BY orders_id 

Но это не работает. Что не так?

Sry для редактирования: кто-то еще отредактировал мой пост конца удалили essentiell часть вопроса

EDIT

Чтобы прояснить мою проблему, я добавил новую информацию:

Я получил MySQL DB с таблицами MyISAM. Две соответствующие таблицы:

  • orders_products: orders_products_id, orders_id, product_id, product_name, PRODUCT_PRICE, product_name, Код продукта, final_price ...
  • продукты: products_id, manufacturers_id, ...

(для получения полной информации о таблицах см скриншот продукты (Screenshot) и скриншот orders_products (Screenshot))

Теперь то, что я хочу это: - Получите все Заказы, которые заказывали продукты с производителями_id = 1. И название продукта продукта этого заказа (с производителями_id = 1). Сгруппированы по заказам.

То, что я сделал до сих пор это:

SELECT 
op.orders_id, 
p.products_id, 
op.products_name, 
op.products_price, 
op.products_quantity 
FROM orders_products op , products p 
INNER JOIN products 
ON op.products_id = p.products_id 
WHERE p.manufacturers_id = 1 AND 
p.orders_id > 10000 

p.orders_id> 10000 для тестирования, чтобы получить только несколько Order_ID-х. Но запрос thies занимает много времени, чтобы выполнить выполнение, даже если он работает. Два раза сервер sql застрял. Где ошибка?

Из-за запутанной о моих правок я открыл новый более понятный пост: SQL Inner Join : DB stuck

+0

Какие СУБД вы используете? – 2010-03-15 12:35:29

+2

Он говорит «MySQL» наверху. –

+0

Вы говорите «product_id = 1, но в вашем запросе указано, что manufacturer_id = 1 ... нужно уточнить, на каком правильном правиле –

ответ

2

Это должно сделать это!

SELECT 
*.orders 
FROM orders INNER JOIN products 
ON orders.product_id = products.product_id 
WHERE products.manufacturers_id =1 
ORDER BY orders_id 
+0

Я полностью не вижу, где вы получаете «AND products.manufacturers_id = 38» от –

+0

LOL, пользователь обновил его. несколько минут назад. Я только что обновил мой, так как теперь он выглядел неправильно :-) –

+0

Отлично, я использую форму EDIT: когда я обновляю свой вопрос, делает это более разумным. –

1

Простой способ будет:

SELECT * FROM Orders WHERE product_id = 1 
+0

+1: для данного запроса запроса объединение не нужно. Очевидно, что если на выходе нужен производитель или что-то в этом роде, тогда потребуется соединение, но не так, как указано. –

+0

Мне нужны все продукты и идентификатор заказа, где products.manufacturers_id = 1 – SurfingCat

+0

@SurfingCat, хорошо, но это не то, что ваш первоначальный вопрос сказал ;-) –

0

ГДЕ products.manufacturers_id = 1 И products.product_id = orders.product_id

Это, если вы хотите, чтобы объединить эти две таблицы.Кроме того, вы запрашиваете product_od вместо product_id

+0

od и id теперь исправлены ... ошибка ввода в должность – SurfingCat