2016-04-13 7 views
0

Ich versuche, einen inneren Join mit 3 Tabellen in Visual Studio zu tun, aber ich erhalte einen Fehler. Wenn ich den inneren Join mit nur 2 Tabellen mache, funktioniert es.Inner Join mit 3 Tabellen in Visual Studio

Hier ist mein Code für 3 Tabellen:

"select b.bidID, b.userID, u.userFirstName, u.userLastName, c.clientName, b.productName, b.openingDate, b.status 
from Bid b 
inner join Client c on b.clientID = c.clientID 
inner join User u on b.userID = u.userID 
where b.clientID = '" + cId + "' "; 

mit 2 Tischen:

"select b.bidID, b.userID, c.clientName, b.productName, b.openingDate, b.status 
from Bid b 
inner join Client c on b.clientID = c.clientID 
where b.clientID = '" + cId + "' "; 
+1

Welche Fehler aus werden Sie bekommen? Wie führen Sie die Abfrage aus - EF? NHibernate? Einige andere ORM? Welche Datenbank verwendest du? – PatrickSteele

+0

Ihre SQL-Anweisung ist anfällig für [SQL-Injektion] (https://www.owasp.org/index.php/SQL_Injection) –

+0

Was ist der Fehler, den Sie erhalten? – CathalMF

Antwort

5

user ist reserviert Stichwort in MSSQL. es mit eckigen Klammern verwenden wie diese [user]

select b.bidID ,b.userID , u.userFirstName, u.userLastName ,c.clientName , b.productName , b.openingDate,b.status 
from Bid b 
inner join Client c on b.clientID=c.clientID 
inner join [User] u on b.userID=u.userID 
where b.clientID='" + cId + "' " 
1

Es ist schwer zu sagen, da Sie nicht den Fehler enthalten haben Sie bekommen, aber meine Vermutung wäre, dass Sie eine Fehlermeldung erhalten, weil Benutzer ein Schlüsselwort in SQL Server. Versuchen Sie, den Benutzer zu [Benutzer] zu ändern und sehen Sie, ob Ihr Fehler verschwindet.

1

Versuchen Sie, die folgende SQL-Abfrage

select b.bidID ,b.userID , u.userFirstName, u.userLastName, c.clientName , b.productName , b.openingDate,b.status 
from ([Bid] b inner join [Client] c on b.clientID=c.clientID) 
inner join [User] u on (b.userID=u.userID) where b.clientID='" + cId + "' ;