所以我正在用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 中"打印"一个表格时,该表格仅包含"显示"表中显示的文本和分配的颜色代码,所有颜色代码都返回为 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返回语法错误...我做错了什么?
您正在尝试加入colors
表中color_code
字段。相反,它应该位于colors
表中color_id
字段上。
SELECT display.showcased_text, colors.color_code
FROM display
LEFT JOIN colors ON display.assigned_color = colors.color_id
在查询 1 中,您使用了错误的条件加入
SELECT display.showcased_text, colors.color_code
FROM display
LEFT JOIN colors ON display.assigned_color = colors.color_id
在查询 2 中,不明白为什么要在连接条件下使用强制转换