我正在尝试进行一个MySQL查询,该查询可以提取与搜索词匹配的所有项目。搜索字词可以匹配idtitle-这已经涵盖了。

我还希望它返回匹配项可能包含的所有子项。因此,目前我正在使用以下查询:(搜索字词:“父项”)

SELECT * FROM `table` WHERE (`id` LIKE "%parent item%" OR `title` LIKE "%parent item%")


哪个返回:

id     | title       | parent_id
------ | ----------- | ---------
15     | parent item | 0


但是我现在陷入了试图找出如何返回这样的事情的麻烦:

id     | title       | parent_id
------ | ----------- | ---------
15     | parent item | 0
34     | child item  | 15
45     | child item  | 15
58     | child item  | 15


我正在使用PDO连接到数据库,所以据我所知,将其保持在一行是必要的。

有任何想法吗?

编辑:

经过反复尝试后找到了解决方案。.我在下面添加了答案,但这就是我的最终结果:

SELECT
    t2.id AS id,
    t2.title AS title,
    t2.parent_id AS parent_id,
    t1.title AS parent
FROM
    `mc_sets` AS t1
RIGHT JOIN `mc_sets` AS t2
ON
    t1.`id` = t2.`parent_id`
WHERE
    t2.id LIKE "%parent item%" OR t1.title LIKE "%parent item%" OR t2.title LIKE "%parent item%"


输出:

id     | title       | parent_id | parent
------ | ----------- | --------- | ----------
15     | parent item | 0         | null
34     | child item  | 15        | parent item
45     | child item  | 15        | parent item
58     | child item  | 15        | parent item


如果您对如何改进它有任何想法,或者有不同的解决方案,请随时分享:D

最佳答案

如果您只是想将表连接在一起,则可以尝试这样的操作。

SELECT p.Id, p.title, c.Id, c.title
FROM Parent p, Children c
where p.Id LIKE "%parent item%" and
p.title LIKE  "%parent item%" and
p.Id = c.ParentId

09-07 02:35