【发布时间】:2012-05-22 22:14:34
【问题描述】:
id title cat lang
6101 AAba 1 1
6102 AAad 4 2
6103 AAaf 4 2
6104 AAa 1 1
6105 AAtar 4 2
6106 AAao 1 1
6107 ABya 4 2
6108 ABar 4 2
6109 ACar 1 2
6110 BCad 3 1
6111 CCas 4 1
6112 DCas 4 2
6113 GCaz 2 2
6114 FCaew 2 2
6115 FCaw3 4 2
6116 FCa3 1 1
6117 FCa4 4 2
6118 FCa5 2 1
6119 FCa6 4 2 --- last id
表格新闻,id是主键,title-是title字段, cat - 有四种类型的新闻类别,lang - 语言代码 1 或 2。
我想实现以下目标: 1) 案例编辑新闻 - id 可用 - 例如 6111,lang 为 1,cat 为 4 我想收集这些id和title:
6119
6117
6115
6112
6109
6105
6103
6102
它们是相反的语言 - lang 是 2,同一类别 cat 是 4 和 在给定 id 6111 之前和之后的 4(或 n)个 id 范围内 还订购了描述
2) 案例添加新闻 - id 不可用,或者在 php 中插入后是 mysql_insert_id() 相同的功能 - 最后 10 个 id 具有相同的 cat = 4 和相反的 lang = 2
到目前为止,我已经尝试过:
对于案例 1) php sn-p:
$id = 6111;
$lang = 1;
$tip = 4;
$sql = "SELECT id, title
FROM pubs
WHERE id BETWEEN ".($id-4)." AND ".($id+4). " AND
tip = ".$tip." AND
lang <> ".$lang."
ORDER BY id DESC ";
但是这会在 id 之前和之后获得 4 个 id,而不是来自我需要的 id 集合。
对于案例 2)
$sql = "SELECT id, title
FROM news
WHERE cat = 4 AND
lang <> 1
ORDER BY id DESC LIMIT 10";
这似乎有效,但可能是我错了。
有没有办法用php和mysql来实现案例1? 案例 2 的更好方法?
【问题讨论】: