sql >> Database >  >> RDS >> Sqlserver

Gegevens uit 2 tabellen samenvoegen

Als u gegevens over meerdere tabellen wilt opvragen, wilt u deelnemen aan de tabellen . Ik ben niet 100% duidelijk over de relatie tussen uw twee tabellen, maar als MedicalRecordID is de juiste relatie, dan zou uw vraag er ongeveer zo uit moeten zien:

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

Dit werkt als er een één-op-één relatie is tussen tabellen, en als er altijd een PatientDetails is registreren voor elke factuur. Als PatientDetails is optioneel, gebruik dan LEFT JOIN in plaats van INNER JOIN .

BEWERKEN (reactie op opmerking):

Ik wed dat de DateTime-conversie in uw WHERE-clausule niet werkt zoals u verwacht. Ervan uitgaande dat dtpFrom en dtpTo zijn DatePicker besturingselementen, wilt u waarschijnlijk de SelectedDate eigenschap in plaats van Text . Ik zou ook ten zeerste aanbevelen om parameters in uw query's te gebruiken in plaats van tekenreeksen samen te voegen. Uw code wordt schoner en u vermijdt SQL-injectie . Hier is een snel voorbeeld:

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. PHP MySQL Google Chart JSON - Compleet voorbeeld

  2. Aangepaste rake taak voor DB:Tabel niet gevonden

  3. Oracle - RETURNING gecombineerd met geaggregeerde functies

  4. Hoe kan ik controleren of er een MySQL-tabel bestaat met PHP?