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


MYSQL Joins - Where Unique ID lies in 1 table

我有 2 张桌子,我想以一种奇怪/危险/非动态的方式连接。我无法控制这些表。我正在尝试从一个包含事件 ID 但不包含类别 ID 的表中提取摘要,但我需要引用另一个表以确保所述事件在所述类别中。此表包含事件 ID 和猫 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 中的帖子。分类 2 和 3 相同。现在我得到空数组。我觉得我需要 2 个 mysql 查询(每个表一个(,然后进行比较,但我不是 100% 确定,宁愿以正确的方式而不是漫长的方式执行此操作。

dr 是我的 MYSQL 对吗?

此查询将返回每个类别中排名前 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