我检查了与我的问题相关的所有问题,但是我问它,因为它与那个问题不同,我尝试但是得到了错误。 请帮我找到解决方案。我已经使用了连接和子查询,但我不知道为什么在这个查询中我遇到错误。请检查查询,我还添加了2个表的创建查询。查询如下:
SELECT * FROM products_features
CASE WHEN (value_table = 'features_values_float')
THEN
(JOIN features_values_float ON features_values_float.feature_value_id = products_features.feature_value_id)
WHEN (value_table = 'features_values_int')
THEN
(JOIN features_values_int ON features_values_int.feature_value_id = products_features.feature_value_id)
END
products_features& features_values_float表创建语句:
CREATE TABLE `products_features` ( `id` int(11) NOT NULL AUTO_INCREMENT, `qid` varchar(32) NOT NULL, `feature_id` varchar(32) NOT NULL, `value_table` varchar(64) NOT NULL, `feature_value_id` varchar(10) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `feature_value_id` (`feature_value_id`), KEY `products_features` (`feature_id`)) ENGINE=InnoDB AUTO_INCREMENT=143854 DEFAULT CHARSET=latin1
CREATE TABLE `features_values_float` ( `id` int(11) NOT NULL AUTO_INCREMENT, `feature_value_id` varchar(10) NOT NULL, `value_float` double NOT NULL, PRIMARY KEY (`id`), KEY `features_values_float` (`feature_value_id`)) ENGINE=InnoDB UTO_INCREMENT=40260 DEFAULT CHARSET=latin1
提前谢谢。
答案 0 :(得分:0)
您可以使用LEFT JOIN,普通联接只会在右表中匹配行的位置加入。左连接仍将显示该行,但它只是空白。
SELECT
*
FROM products_features
LEFT JOIN features_values_float USING (feature_value_id)
因此,您将始终看到两个表中的值,除非右表中没有信息,否则其值将为空。
关于加入的说明,如果两列值相同,那么您可以使用JOIN TABLE_NAME USING (COLUMN_NAME)
,这使其更具可读性。