2016-11-06 2 views
0

ich habe zwei Tabellen:wie Unterabfrage innerhalb rufen, wenn Klausel - Mysql

Produkt:

id name category 
1 AAA BBB 
2 CCC DDD 
3 EEE FFF 

Ordre:

id id_product  date 
1  2  10/11/16 
2  2  06/16/16 
3  3  12/09/16 
4  1  02/06/16 
5  3  15/10/16 

um, wenn ein bestimmtes Produkt zu erfahren hat einen Auftrag ich erstelle diese Select-Abfrage:

aber das funktioniert nicht für mich, in der Tat möchte ich eine Ansicht erstellen, die die Informationen über die Produkte enthält und auch die Spalte "has_ordre", um zu überprüfen, ob ein Produkt ordre oder nicht hat.

Haben Sie Vorschläge? ich bin neu in Mysql danke im Voraus.

+0

So, das RDBMS? – Strawberry

+0

Sie verpassten ein Komma nach Kategorie .. versuchen SELECT ID, Name, Kategorie, CASE WHEN ... – scaisEdge

+0

danke @scaisEdge Sie sind rigth ich verpasste das Komma – James

Antwort

0

Sie können tun, was Sie benötigen, ohne eine Unterabfrage, indem Sie eine Verknüpfung für die beiden Tabellen und eine COUNT() auf order.id_product, die die Anzahl der Aufträge für jedes Produkt zählt. HINWEIS: Diese Abfrage wird vollständig (wie vorgesehen) Produkte ausschließen, die keine Bestellungen haben. Außerdem wird das Ergebnis für diese Abfrage zeigt die Anzahl der Bestellungen für jedes Produkt:

SELECT p.id, p.name, p.category, COUNT(o.id_product) AS num_orders 
FROM product p 
    RIGHT JOIN order o 
     ON p.id = o.id_product 
GROUP BY p.id 
ORDER BY num_orders 

Sie das Recht auf einen LEFT JOIN ändern kann beitreten, wenn Sie alle Aufträge angezeigt werden, unabhängig davon möchten, ob sie haben eine aktive Bestellung:

Here is a fiddle

+0

danke @Philip, funktioniert Ihre Lösung für mich – James

Verwandte Themen