2013-05-16 80 views
0

我試圖列出有采購訂單(POS)超過一個供應商
這裏作業的所有作業信息查詢工作是兩個表中的列與多個供應商

table pos 
+--------+-------+------------+ 
| job_id | po_id | vendor | 
+--------+-------+------------+ 

table jobs 

+--------+---------+---------+ 
| job_id | cust_id | jobtype | 
+--------+---------+---------+ 

目前,我對如何使用子查詢返回列出超過1個供應商的作業感到茫然。任何幫助,將不勝感激。

編輯 >>>>

mysql> select j.*, vendor, count(vendor) as count 
from jobs j join pos p on p.job_id=j.job_id 
group by vendor 
having count(vendor) > 0; 

該查詢返回差不多正確的結果,但它顯示了相同的JOB_ID兩次在表中,而不是重複的時候,我只想要鮮明JOB_ID的以顯示。試圖使用不同的job_id返回'列job_id不明確' 這是一個羣體的問題?我需要一個子查詢嗎?

回答

0

您可以聚合和having條款做到這一點:

select job_id 
from pos p 
group by job_id 
having count(distinct vendor) > 0 

我明白了,你希望所有的作業信息:

select j.* 
from job j 
where job_id in (select p.job_id 
       from pos p 
       group by p.job_id 
       having count(distinct p.vendor) > 0 
       ) 
+0

這裏使用的別名 – Drew

1
SELECT * FROM jobs 
WHERE job_id IN (
    SELECT 
    job_id 
    FROM 
    pos 
    GROUP BY job_id 
    HAVING COUNT(DISTINCT vendor) > 1 
) 
0

的步驟是:

  1. 使用job_id()加入表格)
  2. 計數每個作業記錄相關聯的PO供應商(COUNT(DISTINCT pos.vendor)
  3. 只包含有一個以上的供應商PO這些工作(HAVING COUNT(DISTINCT pos.vendor) > 1

    SELECT job_id, cust_id, jobtype, COUNT(DISTINCT pos.vendor) 
        FROM jobs 
        INNER JOIN pos ON jobs.job_id = pos.job_id 
        GROUP BY job_id, cust_id, jobtype 
        HAVING COUNT(DISTINCT pos.vendor) > 1 
    
+0

謝謝蒂姆!我意識到,只要我發佈 - 這是一讀起初誤解了這個問題的情況。當您發佈評論時,我正在編輯我的答案。更新後的答案應該沒問題,或者至少它會做我認爲*問題問的問題:)再次,謝謝。 –

0

我想的東西。下面的查詢不滿足哪部分內容?

SELECT j.* 
    FROM jobs j 
    JOIN pos p 
    ON p.job_id = j.job_id 
GROUP 
    BY j.job_id 
HAVING COUNT(*) > 1;