MySQL используйте leftjoin с select - PullRequest
0 голосов
/ 06 января 2020

У меня есть две таблицы:

1. movie
id, userid, movie_id, status, score
2. movie_data
id, name_de, name_en, description, url

Когда я использую этот запрос:

SELECT * 
FROM `movie` LEFT JOIN 
      movie_data ON movie.movie_id = movie_data.id 
ORDER BY movie.id

Когда я ввожу этот запрос, я получаю все поля, но также два раза Я бы. Но мне не удается показать только первый «идентификатор» или переименовать второй идентификатор. Я надеюсь, что кто-то может мне помочь :) Спасибо за чтение

Ответы [ 4 ]

1 голос
/ 06 января 2020

Вам необходимо перечислить столбцы в предложении SELECT и использовать псевдонимы для устранения неоднозначности столбцов омонимов:

SELECT
    m.id,
    m.user_id,
    m.movie_id,
    m.status,
    m.score,
    d.id data_id,   --> column alias
    d.name_de,
    d.name_en,
    d.description,
    d.url
FROM movie m 
LEFT JOIN movie_data d ON m.movie_id = d.id 
ORDER BY m.id
0 голосов
/ 06 января 2020

Запрос должен быть следующим:

SELECT 
    `movie`.`id`,
    `movie`.`userid`,
    `movie`.`movie_id`,
    `movie`.`status`,
    `movie`.`score`,
    `movie_data`.`name_de`,
    `movie_data`.`name_en`,
    `movie_data`.`description`,
    `movie_data`.`url`
FROM `movie` 
LEFT JOIN `movie_data` ON `movie`.`movie_id` = `movie_data`.`id` 
ORDER BY `movie`.`id`;

Таким образом, вы можете точно выбрать то, что вам нужно

0 голосов
/ 06 января 2020

Вы также можете сделать, например,

SELECT 
    `movie`.*, -- select all fields from one table
     movie_data.id as movieId  -- and some fields of another table
FROM `movie` LEFT JOIN 
      movie_data ON movie.movie_id = movie_data.id 
ORDER BY movie.id
0 голосов
/ 06 января 2020

Явно перечислите столбцы, которые вы хотите. Не используйте select *:

SELECT m.id, m.userid, m.movie_id, m.status, m.score,
       md.name_de, md.name_en, md.description, md.url
FROM `movie` m LEFT JOIN 
     movie_data md
     ON m.movie_id = md.id
ORDER BY m.id
...