2010-12-04 7 views
0

Ich habe zwei Tabellen customer und items genannt.Problem in SQL-Abfrage

Mit einzelnen Abfrage möchte ich die alle custid und customername deren custid='Custid1' und itemid deren custid='Custid1' zu bekommen.

Wie kann ich diese Abfrage erstellen? custid ist der Primärschlüssel der customer Tabelle. custid ist der Fremdschlüssel von items Tabelle.

Ich habe diese Abfrage geschrieben sein nicht alle nur die custid Auflistung, custid dreimal Listing ... Hier ist meine Frage:

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

Sie abwechselnd halten zwischen 'customerid' und' custid'. Sind das zwei verschiedene Spalten? Oder benutzen Sie zwei verschiedene Namen, nur um uns zu verwirren? Bitte erläutern Sie auch den Unterschied zwischen der gewünschten Ausgabe und der tatsächlich ausgegebenen Ausgabe. Einige Beispieldaten sollten ebenfalls hilfreich sein. – APC

+0

Thats Speling Fehler Spalte ist nur Custid. – Jims

+0

Ihre Abfrage sieht gut aus - listet sie die richtige Datenmenge auf, wenn sie in SSMS stand-alone ausgeführt wird? Oder haben Sie vielleicht Kunden ohne "Gegenstände"? In diesem Fall benötigen Sie einen LEFT OUTER JOIN statt eines INNER JOIN –

Antwort

0

Ihre Frage nicht ganz klar ist - was ist das Sie wirklich wollen? ?

Der JOIN, den Sie haben, wird alle Kunden mit Artikeln auflisten, bei denen customer.custidcustid1 ist. Aber das scheint nicht das zu sein, was du suchst ...

Könnte es sein, dass du nach allen Kunden suchst - mit oder ohne Artikel - die eine bestimmte custid ?? so etwas wie dieses versuchen:

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' 

Wenn der items.custid ist in der Tat ein Fremdschlüssel in die customer Tabelle, sollte es keine Gegenstände sein um diese haben custid = custid1, die zu einem bestehenden Kunden nicht verbunden sind.

0

Wenn Ihre Frage bezieht sich tatsächlich, wie Sie die Parameter in geben, Ihre proc sein sollte:

Verfahren spGetCustomer erstellen (@ custid1 varchar (100)) als beginnen wählen a.custid, a.custname b.itemid, verbinden sie
von Kunden eine innere Elemente b auf a.custid = b.custid WHERE [email protected] Ende