sql >> Database teknologi >  >> RDS >> Sqlserver

Sammenlægning af data fra 2 tabeller

For at forespørge data på tværs af flere tabeller, vil du tilslutte dig tabellerne . Jeg er ikke 100 % klar over forholdet mellem dine to tabeller, men hvis MedicalRecordID er det korrekte forhold, så skulle din forespørgsel se nogenlunde sådan ud:

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) ;

Dette virker, hvis der er et en-til-en forhold mellem tabeller, og hvis der altid er en PatientDetails registrering for hver faktura. Hvis PatientDetails er valgfri, så brug LEFT JOIN i stedet for INNER JOIN .

EDIT (svar på kommentar):

Jeg satser på, at DateTime-konverteringen i din WHERE-klausul ikke fungerer, som du forventer. Forudsat at dtpFrom og dtpTo er DatePicker kontroller, vil du sandsynligvis bruge SelectedDate egenskab i stedet for Text . Jeg vil også varmt anbefale at bruge parametre i dine forespørgsler i stedet for at sammenkæde strenge. Din kode bliver renere, og du undgår SQL-injektion . Her er et hurtigt eksempel:

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. Ressource id #6 fejl i PHP med MySQL

  2. Hvilken datatype skal bruges til hashed kodeordsfelt og hvilken længde?

  3. PostgreSQL rekursiv forælder/barn-forespørgsel

  4. Hvordan skriver man oracle insert script med et felt som CLOB?