2012-11-01 4 views
0

Je dois effectuer une requête dans MySQL qui renvoie des valeurs distinctes pour product_id mais aussi je dois sélectionner et retourner le champ 'id' qui se trouve dans cette table particulière.Requête SQL distincte avec sélection supplémentaire

Cette requête retourne de distincts de Product_ID sans id:

SELECT DISTINCT product_id FROM orders_cart 

Cette requête utilisera distincte sur les deux champs qui et je veux l'utiliser sur product_id et voir l'id

SELECT DISTINCT id, product_id FROM orders_cart 

Il serait être assez facile à faire sur pgsql mais je n'ai aucune idée de comment le faire sur mysql.

+0

Que pensez-vous de cela? SELECT DISTINCT ID_produit, id FROM commandes_cart –

+0

@MoyedAnsari est-ce différent de OPs sql? Je pense que l'ordre des colonnes n'a pas d'importance en –

+0

Bien que je l'ai utilisé pour pg sql django orm avec .distinct ("field_name") – Efrin

Répondre

1

Votre requête n'est pas bien définie: Considérez ce tableau

id product_id 
1  1 
2  2 
3  1 
4  2 

Quel devrait être le résultat de votre requête? Si vous voulez dire

id  product_id 
1 or 3  1 
2 or 4  2 

vous êtes dans le pays des requêtes non-déterministes.

Ce que vous pouvez faire est

SELECT MIN(id), product_id FROM orders_cart GROUP BY product_id 

qui produisent de façon déterministe

id product_id 
1  1 
2  2 
+0

GROUP BY a fait l'affaire mais MIN (id) n'était pas nécessaire. – Efrin

+0

'SELECT id, ID_produit FROM commandes_cart GROUPE BY id_produit 'est non-déterministe: vous obtiendrez l'un des ID, mais il n'est pas strictement défini lequel. 'SELECT MIN (id), ID_produit FROM orders_cart GROUP BY id_produit est déterministe, il vous donnera le plus petit identifiant. –

0

Thats my code final: bits les plus importants pour cette question étaient la ligne 1,2 et 4 :) GROUP BY a fait l'affaire :)

SELECT orders_cart.id, product_id, order_id 
FROM orders_cart 
LEFT JOIN orders_order ON orders_cart.order_id=orders_order.id 
WHERE orders_order.status='Wysłano' 
GROUP BY orders_cart.product_id