sql >> Databasteknik >  >> RDS >> Sqlserver

Sammanfogar data från 2 tabeller

Om du vill söka efter data över flera tabeller vill du gå med i tabellerna . Jag är inte 100 % klar över förhållandet mellan dina två tabeller, men om MedicalRecordID är det korrekta förhållandet bör din fråga se ut ungefär så här:

SELECT
    CONVERT(char(80), i.InvDate,3) AS InvDate,
    i.InvoiceNo,
    i.EmployerCode,
    i.TaxAmount + i.SubTotal AS Amount,
    '' AS Payment,
    pd.LastName,
    pd.GivenName
FROM
    dbo.Invoice i
        INNER JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
;

Detta fungerar om det finns en en-till-en-relation mellan tabeller och om det alltid finns en PatientDetails rekord för varje faktura. Om PatientDetails är valfritt, använd sedan LEFT JOIN istället för INNER JOIN .

EDIT (svar på kommentar):

Jag slår vad om att DateTime-konverteringen i din WHERE-klausul inte fungerar som du förväntar dig. Förutsatt att dtpFrom och dtpTo är DatePicker kontroller vill du förmodligen använda SelectedDate egenskap istället för Text . Jag skulle också starkt rekommendera att använda parametrar i dina frågor snarare än att sammanfoga strängar. Din kod blir renare och du slipper SQL-injektion . Här är ett snabbt exempel:

using (SqlConnection connection = new SqlConnection( ... ))
{
    connection.Open();

    string sql = @"
                SELECT
                    CONVERT(char(80), i.InvDate,3) AS InvDate,
                    i.InvoiceNo,
                    i.EmployerCode,
                    i.TaxAmount + i.SubTotal AS Amount,
                    '' AS Payment,
                    pd.GivenName
                FROM
                    dbo.Invoice i
                        LEFT JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
                WHERE
                    InvDate >= @fromDate AND InvDate <= @toDate";

    SqlCommand cmd = new SqlCommand(sql, connection);
    cmd.Parameters.AddWithValue("@fromDate", dtpFrom.SelectedDate);
    cmd.Parameters.AddWithValue("@toDate", dtpTo.SelectedDate);

    using (SqlDataReader reader = cmd.ExecuteReader())
    {
        // do stuff with results
    }
}



  1. Perfekt Storm för att uppgradera till en modern version av SQL Server

  2. hur visar man word-dokument i webbläsaren i localhost?

  3. Access 2016 For Dummies Cheat Sheet

  4. Ingen anslutning kunde göras eftersom målmaskinen aktivt vägrade det (PHP / WAMP)