/ / Dotaz mysql: chyba, ktorá hovorí, že poddotaz vracia viac ako 1 riadok - php, mysql, mysql-error-1242

Mysql Dotaz: chyba, ktorá hovorí, že poddotaz vráti viac ako 1 riadok - php, mysql, mysql-error-1242

Snažím sa urobiť zložitý dotaz z dvoch tabuliek ... Je to otázka z kvízu zručností.

stôl

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

výkon

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

Pracoval som na svojom dotaze a vyzerá to takto ...

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

Dalo mi to chybu, ktorá hovorí, že poddotaz vráti viac ako 1 riadok

odpovede:

4 pre odpoveď č. 1

Skúste to:

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

Čiastkový dopyt nie je potrebný.


0 pre odpoveď č. 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 pre odpoveď č. 3

Skúste to:

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

0 pre odpoveď č. 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