Таким образом, эти две таблицы в вопросе:Выберите различные значения из одной таблицы на основе другой таблицы
userinfo: id(PK), users_id(FK to users table), name, surname
doctorpatient: id(PK), doctor_id(FK to users table), patient_id(FK to users table)
Идея заключается в каждый врач назначается несколько пациентов через таблицу doctorpatient. То, что я хочу сделать, это возвращает массив массивов, где каждый из внутренних массивов содержит следующее:
users_id(doctor), name(doctor), surname(doctor), users_id(patient), name(patient), surname(patient)
Может ли это даже быть сделано с помощью чисто SQL? Я пробовал:
SELECT userinfo.users_id,
userinfo.name,
userinfo.surname,
u2.users_id,
u2.name,
u2.surname
FROM doctorpatient
RIGHT OUTER JOIN userinfo
ON doctorpatient.doctor_id = userinfo.users_id
LEFT OUTER JOIN userinfo AS u2
ON doctorpatient.patient_id = u2.users_id
но независимо от того, какую комбинацию соединений я стараюсь, он никогда не выходит. Я попытался получить данные в трех отдельных запросах, а затем каким-то образом получить результат, который мне нужен, используя PHP, но я ничего не получил.
Edit: То, что я хочу это:
array(
subarray1(patient_id1,
patient_name1,
patient_surname1,
doctor_id1,
doctor_name1,
doctor_surname1)
subarray2(patient_id2,
patient_name2,
patient_surname2,
doctor_id1,
doctor_name1,
doctor_surname1)
etc...
, где один врач может иметь несколько пациентов. Что мой запрос получает меня выглядит примерно так:
array(
subarray1(patient_id1,
patient_name1,
patient_surname1,
)
subarray2(patient_id2,
patient_name2,
patient_surname2,
)
etc...
Но большая часть данных равна нулю.
Что вы хотите получить? – Eugene
На первый взгляд ваш запрос выглядит правильно. Можете ли вы показать, чего вы ожидаете и что получаете вместо этого? – Barmar