Member 11572517 Ответов: 2

Что такое правильный запрос соединения?


я сделал систему управления физиотерапией, и у меня есть две таблицы patient_mstr и old_patient. я даю contact_no в качестве первичного ключа и внешнего ключа. я хочу искать контакт нет и отображать конкретные поля записей из таблицы. код, как указано ниже.

Что я уже пробовал:

private void txtscrcno_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.Enter)
                {
                    OleDbCommand cmd = new OleDbCommand("select patient_mstr.Sr_no,patient_mstr.P_name,patient_mstr.M_name,patient_mstr.L_name,old_patient.E_date,patient_mstr.Address,old_patient.Pain,old_patient.Total_charge,old_patient.Total_paid from patient_mstr join on old_patient where patient_mstr.Contact_no=old_patient.Contact_no and Contact_no=@Contact_no", cn);
                    cmd.Parameters.Add(new OleDbParameter("@Contact_no", txtscrcno.Text));
                    cn.Open();
                    if (cmd.ExecuteNonQuery() > 1)
                    {
                        //OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        da.Fill(ds, "patient_mstr");
                        dgvinfo.DataSource = ds;
                        dgvinfo.DataMember = "patient_mstr";
                        cn.Close();
                    }
                    else
                    {
                        MessageBox.Show("There is no record found.","No record",MessageBoxButtons.OKCancel,MessageBoxIcon.Error);
                    }
                }
            }
            catch (Exception j)
            {
                MessageBox.Show(j.Message);
            }
        }

TheSQLServerGuy

пожалуйста, отформатируйте код для лучшей читабельности

Member 11572517

Извините, сэр, я не знаю, как его отформатировать, поэтому просто делаю это.

TheSQLServerGuy

кто-то уже сделал форматирование

2 Ответов

Рейтинг:
5

TheSQLServerGuy

Вы можете использовать внутреннее соединение

select patient_mstr.Sr_no,patient_mstr.P_name,patient_mstr.M_name,patient_mstr.L_name,old_patient.E_date,patient_mstr.Address,old_patient.Pain,old_patient.Total_charge,old_patient.Total_paid 
from patient_mstr p inner join old_patient op on p.Contact_no=op.Contact_no 
where p.Contact_no=@Contact_no

Для получения более подробной информации о ВНУТРЕННЕЕ СОЕДИНЕНИЕ проверьте следующее-
Ключевое слово SQL INNER JOIN[^]


Member 11572517

сэр, я попробовать его, потому что я хочу, чтобы левое соединение.спасибо вам, сэр.

Рейтинг:
15

Suvendu Shekhar Giri

Попробуйте что-то вроде следующего-

select patient_mstr.Sr_no,patient_mstr.P_name,patient_mstr.M_name,patient_mstr.L_name,old_patient.E_date,patient_mstr.Address,old_patient.Pain,old_patient.Total_charge,old_patient.Total_paid 
from patient_mstr
left join old_patient on patient_mstr.Contact_no=old_patient.Contact_no 
where old_patient.Contact_no=@Contact_no


Пожалуйста, дайте мне знать, если это не поможет :)


Member 11572517

я стараюсь, сэр, и благодарю вас, сэр.

TheSQLServerGuy

должно ли оно быть левым или внутренним соединением?

Member 11572517

сэр, я хочу присоединиться к левому соединению, но в представлении datagrid я не определяю никакого поля, оно просто пустое. таким образом, ошибка генерируется в том, что нет никакой записи. может быть, именно по этой причине генерируется ошибка.