sql >> データベース >  >> RDS >> Sqlserver

2 つのテーブルからのデータのマージ

    複数のテーブルにわたってデータをクエリするには、テーブルを結合 します。 . 2 つのテーブルの関係については 100% 明確ではありませんが、MedicalRecordID が正しい関係である場合、クエリは次のようになります:

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

    これは、テーブル間に 1 対 1 の関係があり、常に PatientDetails がある場合に機能します。 請求書ごとに記録します。 PatientDetails の場合 オプションです。その場合は LEFT JOIN を使用します INNER JOIN の代わりに .

    編集 (コメントへの返信):

    WHERE 句の DateTime 変換が期待どおりに機能していないことは間違いありません。 dtpFrom と仮定すると、 および dtpTo DatePicker です コントロール、おそらく SelectedDate を使用する必要があります Text の代わりにプロパティ .また、文字列を連結するのではなく、クエリでパラメーターを使用することを強くお勧めします。コードがよりクリーンになり、SQL インジェクション を回避できます .簡単な例を次に示します:

    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. NoSQLとは何ですか?どのように利用されますか?

    2. MySQLで3つのパックで行を表示する方法

    3. ClusterControlを使用してHAProxyメトリックを監視する方法

    4. PDOを使用してMySQLの入力をサニタイズする正しい方法