/ / Mysql Query: błąd, który mówi, że podkwerenda zwraca więcej niż 1 wiersz - php, mysql, mysql-error-1242

Zapytanie Mysql: błąd, który mówi, że podkwerenda zwraca więcej niż 1 wiersz - php, mysql, mysql-error-1242

Próbuję wykonać złożone zapytanie z dwóch tabel ... To pytanie z quizu umiejętności.

stół

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

wydajność

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

Pracowałem nad moim zapytaniem i wygląda to tak ...

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

Dał mi błąd, który mówi, że podkwerenda zwraca więcej niż 1 wiersz

Odpowiedzi:

4 dla odpowiedzi № 1

Spróbuj tego:

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

Zapytanie podrzędne nie jest konieczne.


0 dla odpowiedzi nr 2
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 dla odpowiedzi № 3

Spróbuj tego:

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

0 dla odpowiedzi nr 4
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