0

标题应该是不言自明的,但我会详细说明。

我有一个表A,叫做“pages”,基本结构如下:

id | name  | content 
0  | page1 | <long html text 1>
1  | page2 | <long html text 2>
2  | page3 | <long html text 3>
3  | page4 | <long html text 4>
4  | page5 | <long html text 5>
5  | page6 | <long html text 6>

我有一张表B,叫“菜单”,基本结构如下(当然还有很多:

id | link
0  | page3
1  | page5

我想知道在资源方面,获取表 A 中尚未在表 B 的“链接”列中使用的所有“名称”的最佳方法是什么(也就是说:page1、page2、page4 , page6) 及其相应的“内容”我希望将第一个(A 中的“名称”,未在 B 中的“链接”中使用)保存在一个名为 $name 的数组中,其中包含 $name[0] = "page1 ", $name[1] = "page2" 等,以及另一个名为 $content 的数组中的“内容”,其条目如 $content[0] = 等

在此先感谢所有专家!

4

4 回答 4

2

尝试这样的查询:

select name,content from pages where name not in (select link from menus)

它将列出所有不在菜单表中的项目..

自己做数组的事情:)

祝你好运,编码愉快!

于 2013-07-16T09:05:40.120 回答
1

询问

SELECT name, content FROM pages WHERE name NOT IN (SELECT link FROM menus)

PHP(伪)

Loop through results {

    $name[] = $row['name'];
    $content[] = $row['content'];

}
于 2013-07-16T09:23:46.707 回答
0

//这将获取不匹配的条目

Try using id

SELECT a.id, a.name, a.content, b.link FROM table_A AS a
LEFT JOIN table_B AS b ON a.id=b.id
WHERE b.link IS NULL

Try using name

SELECT a.id, a.name, a.content, b.link FROM table_A AS a
LEFT JOIN table_B AS b ON a.name=b.link
WHERE b.link IS NULL
于 2013-07-16T09:32:15.577 回答
0

其他选项:

询问

SELECT DISTINCT 'name' AS descr, name AS val FROM items WHERE name NOT IN (SELECT link FROM menus) UNION
SELECT DISTINCT 'content' as descr, content as val FROM items WHERE name NOT IN (SELECT link FROM menus)

PHP(伪)

Loop through results {

    $array[$row['descr']][] = $row['val'];

}
于 2013-07-16T09:33:51.777 回答