2010-07-27 6 views
0

J'essaie de faire une requête complexe à partir de deux tables ... C'est une question d'un quiz de compétences.Mysql Query: erreur qui indique que la sous-requête renvoie plus de 1 ligne

Table

**Orders         Customer**s 
    id           id 
    date          first_name 
    shipping_amount       last_name 
    order_status        city 
    customer_id (Customers.id)    state 

sortie

-----------+------------+ 
| State  | # Orders | 
+-----------+------------+ 
| NY  | 55  | 
| CA  | 40  | 
| NJ  | 33  | 
| FL  | 21  | 
| MO  | 12  | 
+-----------+------------+ 

Je travaille sur ma requête et il a l'air comme ça ...

select DISTINCT state, (select count(id) Orders 
         from customers 
         group by state 
         ORDER BY Orders DESC) FROM Customers 

Il m'a donné une erreur qui dit sous-requête renvoie plus de 1 ligne

+0

semble être similaire à http://stackoverflow.com/questions/3340079/tough-mysql-query –

Répondre

4

Essayez ceci:

SELECT c.state, COUNT(o.id) AS Orders 
FROM Customers c, Orders o 
WHERE o.customer_id = c.id 
GROUP BY state 
ORDER BY Orders DESC 

La sous-requête n'est pas nécessaire.

0
SELECT `Customers`.`state`, count(`Orders`.`id`) 
as `orders FROM `Customers` 
LEFT JOIN `Orders` ON `Customers`.`id` = `Orders`.`customer_id` 
GROUP BY `Customers`.`state` 
ORDER BY `orders` DESC 
0

Essayez ceci:

select DISTINCT state, (select count(id) as cnt, Orders from customers group by 
    state ORDER BY Orders DESC) Temp FROM Customers 
0
SELECT c.state as State, COUNT(o.id) as NumOrders 
FROM orders o 
LEFT JOIN customers c ON (c.id = o.customer_id) 
GROUP BY c.state 
Questions connexes