2017-03-27 10 views
2

Können Sie mir dabei helfen? Ich muss eine Abfrage erstellen, um Daten aus verschiedenen Tabellen mithilfe von Inner Join zu erhalten.So erhalten Sie Daten aus verschiedenen Tabellen

Hier ist meine Frage:

select 
    a.DocEntry, 
    a.CardName, 
    a.Address, 
    a.Address2, 
    a.CardCode, 
    a.TaxDate, 
    b.Dscription, 
    b.Quantity, 
    b.Price, 
    b.GTotal, 
    b.WhsCode, 
    c.WhsName, 
    d.CompnyName, 
    d.CompnyAddr, 
    d.Phone1, 
    e.U_NAME 
from OPOR a 
     inner join POR1 b on a.DocEntry = b.DocEntry 
     inner join OWHS c on a.DocEntry = c.WhsCode 
     inner join OADM d on a.DocEntry = d.CompnyName 
     inner join OUSR e on a.DocEntry = e.U_NAME 
where b.DocEntry = 36 

Aber ich bekomme diese Fehlermeldung:

Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the nvarchar value 'OEC Computers UK' to data type int.

+1

Diese verwenden, 'innere Verknüpfung OADM d auf a.DocEntry = d.CompnyName innere beitreten OUSR e auf a.DocEntry = e.U_NAME' aussehen wie sie Zahlen mit Zeichenfolgen vergleichen könnten. –

+0

Bitte zeigen Sie mir den Datentyp von OPOR .DocEntry, OWHS.Whscode, OADM.CompnyName und OUSR.U_Name – Vecchiasignora

Antwort

-1

Welche Art von Spalten "DocEntry", "WhsCode", "CompnyName", "U_NAME"?

Es gibt "OEC Computers UK", die nicht in Ganzzahl konvertieren können.

Die Daten dieser Spalte müssen Zahlen sein, oder Sie können es nicht vergleichen.

+2

Diese Fragen sollten Kommentare sein, und Ihr Ruf ist hoch genug, um das zu tun, auch nach meinem Downvote. –

0

Sie vergleichen eine NVarchar-Spalte mit einem int-Wert oder einer Spalte. Die von Ihnen angegebene Ausnahme wird ausgelöst, wenn diese Spalte mindestens einen Wert enthält, der nicht konvertiert werden kann.

Überprüfen dieser Teil Ihrer Abfrage (Werte nicht implizit von SQL Server analysiert werden), es ist wie ein Join sieht

auf einer Varchar-Spalte und einer Integer-Spalte gebildet wird
inner join OADM d on a.DocEntry = d.CompnyName 
inner join OUSR e on a.DocEntry = e.U_NAME 

Wenn es notwendig ist - (dies wird nicht empfohlen) - ein ähnliches machen verbinden Sie die int Spalte als nvarchar ex gegossen haben:

inner join OUSR e on CAST(a.DocEntry AS NVARCHAR(255)) = e.U_NAME 

Und auch

Wenn der Datentyp von DocEntry ist NVarchar die Ausnahme von

b.DocEntry = 36 

geworfen werden kann, so muss man anstatt es

b.DocEntry = '36' 
Verwandte Themen