2015-07-02 5 views
1

Я изо всех сил пытаюсь понять это, и это, вероятно, довольно просто, но я просто не могу заставить его работать. Используя PHP/MYSQLI, я пытаюсь получить данные из двух таблиц, в то время как первая таблица будет иметь основание для получения всего, вторая таблица может содержать или не иметь данные, соответствующие данным первой таблицы, поэтому мне понадобится вторая таблица для возврата пустые значения. Например ...Mysqli Получение нескольких значений из нескольких таблиц

Первая таблица 'Cust ':

CustomerID Name    School 
------------------------------------------ 
1623   Bob Smith  BON 
1785   Betty Davis  FOOT 
1854   John Miller  BECK 
1547   Kate Lake  BON 

Вторая таблица' YBK':

CustomerID  Frame  Type 
------------------------------------------ 
1623   001  CC 
1854   012  CC 

То, что я хотел бы получить от этих двух таблиц бит переменной между двумя вещами ...

1) Если я хочу выбрать школу с первой вкладки ле (например, когда Cust.School = 'BON') Я хотел бы получить этот результат обратно:

CustomerID Name    School  Frame  Type 
--------------------------------------------------------- 
1623   Bob Smith  BON   001  CC 
1547   Kate Lake  BON   

2) Или, если я выбираю все, я получаю этот результат обратно:

CustomerID Name    School  Frame  Type 
--------------------------------------------------------- 
1623   Bob Smith  BON   001  CC 
1785   Betty Davis  FOOT 
1854   John Miller  BECK  012  CC 
1547   Kate Lake  BON 

Прямо сейчас, когда я пытаюсь выполнить несколько разных версий инструкции SELECT, я возвращаю результаты, которые находятся в обеих таблицах, вместо этого все поля Cust, возвращающиеся с Ybk, если они существуют. Помогите! Спасибо!

ответ

2

Это довольно простой LEFT JOIN:

SELECT * FROM Cust LEFT JOIN YbK using (CustID) where School='BON'; 

# CustID, Name,  School, Frame, Type 
'1547', 'Kate Lake', 'BON', NULL, NULL 
'1623', 'Bob Smith', 'BON', '001', 'CC' 

и

SELECT * FROM Cust LEFT JOIN YbK using (CustID); 

# CustID, Name,   School, Frame, Type 
'1547', 'Kate Lake', 'BON', NULL, NULL 
'1623', 'Bob Smith', 'BON', '001', 'CC' 
'1785', 'Betty Davis', 'FOOT', NULL, NULL 
'1854', 'John Miller', 'BECK', '012', 'CC' 

LEFT JOIN возвращает все строки из первой таблицы в JOIN, и заполнить нулевыми любые отсутствующие колоннах, где нет строка соответствия доступна во второй таблице. Строки сопоставляются по столбцам в предложении USING, который успешно объединяет согласованные столбцы в результате вывода.

Полный синтаксис приведен в руководстве по MySQL here

+0

Отлично! Я понял, что это будет что-то простое с помощью оператора JOIN, я просто не смог бы получить свой синтаксис для JOIN правильно. Спасибо! –

Смежные вопросы