2010-12-04 20 views
0

customeritemsという2つの表があります。単一のクエリでSQL問合せの問題

私は、そのcustid='Custid1'itemidそのcustid='Custid1'すべてcustidcustomernameを取得したいです。

このクエリはどのように作成できますか? custidは、customerテーブルの主キーです。 custiditemsの外部キーです。私はそのだけここで... custid 3回リスト、すべてのcustidをリストアップしていないこのクエリを書かれている

は私のクエリです:

create procedure spGetCustomer 
as 
begin 
    select a.custid, a.custname,b.itemid 
    from customer a inner join items b on a.custid = b.custid 
    WHERE b.custid='custid1' 
end 
+2

a.custid = b.custid の項目bを結合します。それらの2つの異なる列ですか?あるいは、私たちを混乱させるために2つの異なる名前を使用していますか?また、必要な出力と実際の出力との違いについても説明してください。いくつかのサンプルデータを投稿することも役に立ちます。 – APC

+0

thats spelling mistakeコラムはカスタムのみです。 – Jims

+0

あなたのクエリは大丈夫です - SSMSでスタンドアロンで実行されたときに正しいデータセットがリストされていますか?または、「商品」がない顧客がいるかもしれませんか?その場合、INNER JOINではなくLEFT OUTER JOINが必要です –

答えて

0

あなたの質問は非常に明確ではない - それはあなたが本当に欲しいものですか? ?

あなたが持っているJOINは、customer.custidcustid1であるアイテムを持つすべての顧客をリストします。しかしそれはあなたが探しているものではありません.....

あなたは、アイテムの有無にかかわらず、特定のcustidを持っているすべての顧客を探しているでしょうか?このような何かを試してみてください:

SELECT 
    c.custid, c.custname, i.itemid 
FROM 
    dbo.customer c 
LEFT OUTER JOIN 
    dbo.items i ON c.custid = i.custid 
WHERE 
    c.custid = 'custid1' 

items.custidが実際にcustomerテーブルへの外部キーである場合は、既存の顧客に参加していないされている必要がありcustid = custid1周りの任意の項目があってはなりません。

0

あなたの質問は、実際にあなたのprocがあるべき、あなたがにパラメータを渡す方法に関連する場合:

は、手順spGetCustomer(@ custid1のVARCHAR(100))を作成 a.custname、 選択a.custidを開始 など、顧客から
をb.itemidは、内側には、あなたがcustomerid`と `` custid`間で交互に保つ[email protected] エンド