2010-03-15 8 views
0

J'ai une base de données MySql. SQL SELECT Rejoindre?

Il y a une table avec des produits et des commandes avec la structure :

  • Produits: product_id, nom, manufacturers_id
  • Commandes: orders_id, product_id, quantité

Maintenant, je vouloir obtenir toutes les commandes (montrer seulement les produits où product manufacturers_id = 1). Je essayé:

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

Mais cela ne fonctionne pas. Qu'est-ce qui ne va pas?

Sry pour l'édition: modifié par un autre ma fin de poste supprimé une partie essentiell de la question

EDIT

Pour clarifier mon problème j'ai ajouté quelques nouvelles informations:

Je suis un MySQL DB avec les tables MyISAM. Les deux tableaux correspondants sont les suivants:

  • orders_products: orders_products_id, orders_id, product_id, product_name, PRODUCT_PRICE, product_name, product_model, final_price, ...
  • produits: products_id, manufacturers_id, ...

(pour des informations complètes sur les tableaux voir les produits de capture d'écran (Screenshot) et orders_products capture d'écran (Screenshot))

maintenant ce que je veux est la suivante: - Obtenez toutes les commandes qui ont commandé des produits avec manufacturers_id = 1. Et le nom du produit du produit de cette commande (avec manufacturers_id = 1). Groupé par des ordres.

Ce que je l'ai fait jusqu'à présent est la suivante:

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 pour les tests pour obtenir seulement quelques années ORDER_ID. Mais la requête de thies prend beaucoup de temps pour être exécutée si elle fonctionne même. Deux fois le serveur SQL bloqué. Où est l'erreur?

En raison de la confusion au sujet de mes modifications i a ouvert un nouveau poste plus compréhensible: SQL Inner Join : DB stuck

+0

Quel RDBMS utilisez-vous? –

+2

Il dit "MySQL" en haut. –

+0

Vous dites "product_id = 1, mais votre requête indique manufacturers_id = 1 ... besoin de clarification sur lequel est correct –

Répondre

2

Cela devrait le faire!

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

Je ne vois pas où vous obtenez le "AND products.manufacturers_id = 38" de –

+0

LOL, l'utilisateur l'a mis à jour. Il y a quelques minutes, j'ai juste mis à jour le mien en conséquence, car il me paraissait mal maintenant :-) –

+0

Génial, j'utilise l'EDIT: formulaire lorsque je mets à jour ma question, rend ce genre de chose plus raisonnable. –

1

La façon simple serait:

SELECT * FROM Orders WHERE product_id = 1 
+0

+1: Pour l'instruction de requête donnée, la jointure est inutile. Évidemment, si la sortie a besoin du fabricant ou de quelque chose, alors la jointure serait nécessaire - mais pas comme indiqué. –

+0

J'ai besoin de tous les produits et ID de commande où products.manufacturers_id = 1 – SurfingCat

+0

@SurfingCat, ok, mais ce n'est pas ce que votre question d'origine dit ;-) –

0

OÙ products.manufacturers_id = 1 ET products.product_id = orders.product_id

C'est si vous voulez joindre les deux tables.Et à côté de cela, vous demandez un product_od au lieu d'un product_id

+0

od et id est maintenant corrigé ... erreur de frappe dans la poste – SurfingCat