Left Join в MySQL возвращает нулевые значения, в то время как они не должны быть

0

Поэтому я пишу небольшой проект с MySQL. Общая идея состоит в том, чтобы иметь простой веб-сайт, который отображает текст в html-квадратах, где данные о них берутся из базы данных (отображаемый текст и цвет фона квадрата).

Мой код теперь выглядит следующим образом:

Таблица с квадратами:

CREATE TABLE 'display' (
  'display_id' int(50) NOT NULL,
  'showcased_text' varchar(50) NOT NULL,
  'assigned_color' int(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Таблица с цветами:

CREATE TABLE 'kolory' (
  'color_id' int(50) NOT NULL,
  'color_name' varchar(50) NOT NULL,
  'color_code' varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Существует также код, который устанавливает связь между этими двумя таблицами:

ALTER TABLE 'display'
  ADD CONSTRAINT 'display_ibfk_1' FOREIGN KEY ('assigned_color') REFERENCES 'colors' ('color_id');
COMMIT;

И пока это работает хорошо... Но когда я пытаюсь "распечатать" таблицу в PHPMyAdmin, которая содержит только отображаемый текст из таблицы "display" и назначенного цветового кода, все цветовые коды возвращаются как NULL.

The code looks like that:
SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_code

Я тоже пытался работать с CAST, вот так:

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON cast(display.assigned_color as VARCHAR(50)) = colors.color_code

Но тогда MySQL возвращает синтаксическую ошибку... Что я делаю неправильно?

Теги:
join
null

2 ответа

1

Вы пытаетесь присоединиться к полю color_code в таблице colors. Вместо этого он должен быть в поле color_id в таблице colors.

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_id
  • 0
    Вау, спасибо! : D Не могу поверить, это было так очевидно ... Ошибки начинающих, я думаю. Еще раз спасибо, высоко ценится!
0

В Query 1 вы использовали неправильное условие для присоединения

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_id

в запросе 2, не понимаю, почему вы используете листинг в состоянии соединения

Ещё вопросы

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