Hướng dẫn mysql select where count is 0 - mysql chọn nơi đếm là 0

Trong DB của tôi, tôi có bảng "bán hàng" và "sales_item". Đôi khi, có gì đó không ổn và việc bán hàng được ghi lại nhưng không phải là mặt hàng bán hàng. Vì vậy, tôi đang cố gắng lấy SalesID từ "Bán hàng" của mình mà không có bất kỳ hàng nào trong bảng Sales_item.
So I'm trying to get the salesID from my table "sales" that haven't got any rows in the sales_item table.

Đây là truy vấn MySQL mà tôi nghĩ sẽ hoạt động, nhưng nó không:

SELECT s.*
FROM sales s NATURAL JOIN sales_item si
WHERE s.date like '" . ((isset($_GET['date'])) ? $_GET['date'] : date("Y-m-d")) . "%'
AND s.sales_id like '" . ((isset($_GET['shop'])) ? $_GET['shop'] : substr($_COOKIE['shop'], 0, 3)) ."%'
HAVING count(si.sales_item_id) = 0;

Bất kỳ suy nghĩ?

hỏi ngày 15 tháng 6 năm 2010 lúc 12:25Jun 15, 2010 at 12:25

Hướng dẫn mysql select where count is 0 - mysql chọn nơi đếm là 0

OsdaveosdaveOSdave

8,5107 Huy hiệu vàng44 Huy hiệu bạc59 Huy hiệu đồng7 gold badges44 silver badges59 bronze badges

Bí danh bảng V không đến từ đâu? Hiển thị định nghĩa bảng sẽ là một ý tưởng thực sự tốt;)

Nó phải là một tham gia bên trái:

SELECT *
FROM table1
LEFT JOIN table2 ON(table1.id = table2.table1_id)
WHERE table2.table1_id IS NULL

Bảng 1 là bảng bán hàng của bạn và bảng2 là bạn Sales_item

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 12:30Jun 15, 2010 at 12:30

Hướng dẫn mysql select where count is 0 - mysql chọn nơi đếm là 0

Tobias P.Tobias P.Tobias P.

4.4072 Huy hiệu vàng28 Huy hiệu bạc35 Huy hiệu Đồng2 gold badges28 silver badges35 bronze badges

2

Luôn luôn được sử dụng với nhóm bởi

GROUP BY si.sales_item_id
HAVING count(si.sales_item_id) = 0;

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 12:30Jun 15, 2010 at 12:30

Tobias P.Tobias P.Salil

4.4072 Huy hiệu vàng28 Huy hiệu bạc35 Huy hiệu Đồng20 gold badges120 silver badges153 bronze badges

1

Luôn luôn được sử dụng với nhóm bởi

Salilsalil

45,7K20 Huy hiệu vàng120 Huy hiệu bạc153 Huy hiệu đồng

Bạn không cần phải tham gia các bảng, bạn có thể sử dụng một cái gì đó như:Jun 15, 2010 at 12:29

[...] WHERE sales.id NOT IN (SELECT sales_id FROM sales_item)
Victor Stanciu

Điều này chỉ lọc doanh số không có bất kỳ mục Sales_item tương ứng nào.3 gold badges25 silver badges34 bronze badges

2

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 12:29

SELECT S.*
FROM SALES S 
WHERE NOT EXISTS (
    SELECT 1 
    FROM SALES_ITEM SI 
    WHERE SI.SALES_ITEM_ID = S.ID)

Victor Stanciuvictor Stanciu

11.6K3 Huy hiệu vàng25 Huy hiệu bạc34 Huy hiệu đồngJun 15, 2010 at 13:17

Hướng dẫn mysql select where count is 0 - mysql chọn nơi đếm là 0

Cho sự hoàn chỉnh ....Phil Wallach

MySQL có thể có vấn đề với các điều khoản.19 silver badges19 bronze badges

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 13:17

Phil Wallachphil Wallach

SELECT * from sales where sales_id not in (SELECT DISTINCT sales_id from sales_item)

3.31819 Huy hiệu bạc19 Huy hiệu đồng

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 12:30Jun 15, 2010 at 12:30

Tobias P.Tobias P.ZombieSheep

4.4072 Huy hiệu vàng28 Huy hiệu bạc35 Huy hiệu Đồng12 gold badges66 silver badges113 bronze badges

Luôn luôn được sử dụng với nhóm bởi

Salilsalil

45,7K20 Huy hiệu vàng120 Huy hiệu bạc153 Huy hiệu đồng

Bạn không cần phải tham gia các bảng, bạn có thể sử dụng một cái gì đó như:

[...] WHERE sales.id NOT IN (SELECT sales_id FROM sales_item)
Jun 15, 2010 at 12:33

Điều này chỉ lọc doanh số không có bất kỳ mục Sales_item tương ứng nào.Kari

Đã trả lời ngày 15 tháng 6 năm 2010 lúc 12:295 bronze badges

Victor Stanciuvictor Stanciu

SELECT s.id, count(*) as no_of_items
FROM sales s NATURAL JOIN sales_item si
WHERE s.date like '" . ((isset($_GET['date'])) ? $_GET['date'] : date("Y-m-d")) . "%'
  AND v.sales_id like '" . ((isset($_GET['shop'])) ? $_GET['shop'] : substr($_COOKIE['shop'], 0, 3)) ."%'
GROUP BY si.salesitem_id
HAVING no_of_items = 0;

11.6K3 Huy hiệu vàng25 Huy hiệu bạc34 Huy hiệu đồngJun 15, 2010 at 12:34

Hướng dẫn mysql select where count is 0 - mysql chọn nơi đếm là 0

Cho sự hoàn chỉnh ....Michał Pękała

MySQL có thể có vấn đề với các điều khoản.5 gold badges22 silver badges32 bronze badges

Chúng ta có thể sử dụng Đếm trong mệnh đề WHERE trong MySQL không?

SQL Chọn đếm () có thể được câu lạc bộ với SQL WHERE mệnh đề.Sử dụng mệnh đề WHERE, chúng tôi có quyền truy cập để hạn chế dữ liệu sẽ được đưa vào hàm đếm () và chọn câu lệnh thông qua một điều kiện.. Using the WHERE clause, we have access to restrict the data to be fed to the COUNT() function and SELECT statement through a condition.

Đếm (*) trong MySQL là gì?

Hàm số () trả về số lượng bản ghi được trả về bởi một truy vấn chọn.

SQL có thể đếm lại null không?

Bá tước không bao giờ trả lại null.Ví dụ sau đây tính toán, đối với mỗi nhân viên trong bảng nhân viên, số lượng nhân viên chuyển tiền lương trong khoảng 50 ít hơn 150 so với tiền lương của nhân viên.. The following example calculates, for each employee in the employees table, the moving count of employees earning salaries in the range 50 less than through 150 greater than the employee's salary.

Đếm 1 có nghĩa là SQL là gì?

Đếm (1) về cơ bản chỉ đếm một cột giá trị không đổi 1 cho mỗi hàng.Như những người dùng khác ở đây đã nói, nó giống như đếm (0) hoặc đếm (42).counting a constant value 1 column for each row. As other users here have said, it's the same as COUNT(0) or COUNT(42) .