MYSQL联接 - 唯一ID位于1个表中

时间:2012-05-09 04:58:21

标签: php mysql sql

我想要以奇怪/危险/非动态的方式连接2个表。我无法控制这些表格。我试图从一个包含事件ID 不是类别ID 的表中提取摘要但我需要引用另一个表以确保所述事件在所说的类别。此表包含事件ID cat id 。我试图加入他们,但我一直没有回来。

我知道这很危险,但我也可以控制类别,所以我知道除非我指定,否则我的类别ID不会改变。由于它会自动递增 - 我的类别将为1,2,3。

我的表格要点

*events_vevent*

 - ev_id 
 - catid

 ---

*events_vevdetail*

 - evdet_id
 - summary

我的代码

$data = array();
for($i = 0; $i < 3; $i++){
    $summary = array();
    $query_summary = mysql_query("SELECT events_vevdetail.summary FROM 
                     events_vevdetail, events_vevent 
                     WHERE 'events_vevent.evdet_id = $i' LIMIT 5") 
    or die(mysql_error());

    while(($row = mysql_fetch_array($query_summary)))
        $summary[] = $row[0];

    switch($i){
        case 0:
            $data['cat1'] = $summary;
            break;
        case 1:
            $data['cat2'] = $summary;
            break;
        case 2:
            $data['cat3'] = $summary;
            break;
    }
}

echo json_encode($data);

解释

所以我想要做的是:因为我知道类别1的ID总是为0,所以我想提取最近的5个帖子,但只有类别ID为0的帖子。对于cateogry2和3. 现在我得到了空数组。我觉得我需要2个mysql查询(每个表一个),然后进行比较,但我不是100%肯定,宁愿以正确的方式做到这一点而不是漫长的道路。

tl; dr 是我的MYSQL吗?

1 个答案:

答案 0 :(得分:3)

此查询将返回每个类别中最多的5条记录。

SELECT e1 . *
FROM events_vevent e1
LEFT OUTER JOIN events_vevent e2 ON 
( e1.catid = e2.catid AND e1.ev_id < e2.ev_id )
GROUP BY e1.ev_id
HAVING COUNT( * ) < 5
ORDER BY catid, ev_id DESC