Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggabungkan data dari 2 tabel

Untuk membuat kueri data di beberapa tabel, Anda ingin bergabung dengan tabel . Saya tidak 100% jelas tentang hubungan antara dua tabel Anda, tetapi jika MedicalRecordID adalah hubungan yang benar, maka kueri Anda akan terlihat seperti ini:

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

Ini berfungsi jika ada hubungan satu-ke-satu antara tabel, dan jika selalu ada PatientDetails catatan untuk setiap faktur. Jika PatientDetails adalah opsional, lalu gunakan LEFT JOIN bukannya INNER JOIN .

EDIT (tanggapan terhadap komentar):

Saya bertaruh bahwa konversi DateTime di klausa WHERE Anda tidak berfungsi seperti yang Anda harapkan. Dengan asumsi bahwa dtpFrom dan dtpTo adalah DatePicker kontrol, Anda mungkin ingin menggunakan SelectedDate properti alih-alih Text . Juga, saya akan sangat menyarankan menggunakan parameter dalam kueri Anda daripada menggabungkan string. Kode Anda akan lebih bersih, dan Anda akan menghindari injeksi SQL . Berikut ini contoh singkatnya:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hindari duplikat dalam kueri INSERT INTO SELECT di SQL Server

  2. INSTR() Setara di SQL Server

  3. Sql Suka ke RegEx

  4. Apakah angka setelah DateTime2 adalah untuk tujuan nanodetik?

  5. SQL Server - Masalah meneruskan variabel ke prosedur tersimpan