Использование левого соединения и сохранение значения левого идентификатора таблицы

0

У меня две таблицы в моей базе данных, где первая имеет связанные значения второго. Именно так:

стол "люди"

ID |    NAME   | SCHOOL
-------------------------
1  | john      | 2
2  | fred      | 1
3  | maria     | 3

столовая "школа"

ID |   NAME  
-------------------------
1  | first school
2  | second school
3  | third school

Хорошо. Я пытаюсь сделать выбор в таблице "people" и заменить номер "SCHOOL" на идентификатор таблицы "school".

Поэтому я сделал это:

"SELECT * FROM people A LEFT JOIN school B ON A.school = B.id"

Это нормально!

Но если мне нужно получить значение идентификатора "people" в этом возврате, оно будет заменено значком таблицы "школа".

Как я могу это решить?

Большое спасибо!

  • 0
    Вместо * используйте A.ID в качестве people_id, A.NAME в качестве people_name, B.ID в качестве school_id, B.NAME в качестве school_name
  • 0
    Левое объединение требуется только в том случае, если вы не уверены, что человек когда-либо ходил в какую-либо школу, и в этом случае он вернет всех людей независимо от того, ходили ли они в школу (пусто в столбце школы таблицы людей).
Теги:

1 ответ

0
Лучший ответ

Если вы изучаете SQL, научитесь перечислять все нужные столбцы. Явное:

SELECT p.id, p.name, s.name as school_name
FROM 
     people p LEFT JOIN
     school s
     ON p.school = s.id;

Заметки:

  • Алиасы таблицы - это сокращения для имен таблиц. Это упрощает процесс запроса.
  • LEFT JOIN здесь действительно не нужна, но вы используете его.
  • s.name может быть псевдонимом (s.name as school_name), чтобы отличить его от имени человека.
  • 0
    a.school -> p.school?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню