Mysql从多个表中连接列

时间:2013-08-07 13:50:42

标签: mysql

我有一张主表和两张表,其中包含有关第一张表的多个dinamyc信息。

第一个名为'items'的表包含主要信息。然后有两个表(评级和索引),其中包含有关视听费用和时间段的某些值的信息。

我想要的: 当我查询这些项目时,我希望结果具有来自评级和索引表的其他列名。

我有这样的代码

SELECT items.*, ratings.val AS rating, indexes.val AS idx
FROM items,ratings,indexes 
WHERE items.date>=1349902800000 AND items.date <=1349989199000 
AND ratings.period_start <= items.date 
AND ratings.period_end > items.date 
AND ratings.auditory = 'kids'
AND indexes.period_start <= items.date 
AND indexes.period_end > items.date 
AND indexes.auditory = 'kids'
ORDER BY indexes.added, ratings.added DESC

表格看起来像这样

项目:

`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) DEFAULT NULL,
`date` bigint(40) DEFAULT NULL
PRIMARY KEY (`id`)

评分:

`id` bigint(50) NOT NULL AUTO_INCREMENT,
`period_start` bigint(50) DEFAULT NULL,
`period_end` bigint(50) DEFAULT NULL,
`val` float DEFAULT NULL,
`auditory` varchar(200) DEFAULT NULL,
`added` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)

除了'添加'字段以外的所有日期都是简单的TIMESTAMPS是BIGINT格式 - 当您执行Date.getTime()时,从AS3中的任何日期起的毫秒数;

那么 - 获得此项目的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我唯一没有看到的是任何单个ITEM与其评级的独特关联......我认为评级表需要一个“ItemID”来链接回项目。按照现在的情况,如果你在给定的时间段内有100个项目,比如3个月......并且只是添加所有评级/评论,但不将这些评级与实际项目相关联,那么你就会被卡住。将ItemID放入并将其添加到WHERE条件中,你应该好好去。