0

我有 2 个表我想以一种奇怪/危险/非动态的方式连接。我无法控制这些表。我正在尝试从一个包含事件 ID不包含类别 ID的表中提取摘要,但我需要引用另一个表以确保所述事件在所述类别中。此表同时包含事件 idcat 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% 确定,宁愿以正确的方式而不是漫长的方式。

tl;博士是我的 MYSQL 对吗?

4

1 回答 1

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
于 2012-05-09T05:32:27.983 回答