所以我正在用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返回语法错误......我做错了什么?
答案 0 :(得分: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
答案 1 :(得分:0)
在查询1中,您使用了错误的条件加入
SELECT display.showcased_text, colors.color_code
FROM display
LEFT JOIN colors ON display.assigned_color = colors.color_id
在查询2中,不清楚为什么在连接条件中使用强制转换