我已经堆满了这个查询。我需要在不同的表中搜索一个单词 结构。我只有一个搜索框,我正在制作这三个查询,以便在不同的地方找到结果。如何在一个查询中完成所有这些以一起过滤????
1)在这个QUERY中(从PHP)我搜索一个词“$ palabra_buscar”到表“视频”,名称和表格描述“程序”中使用表格的内部联接“programas_videos”< / p>
SELECT * FROM videos
INNER JOIN programas_videos ON videos.id_video = programas_videos.id_video
INNER JOIN programas ON programas_videos.id_prog = programas.id_prog
WHERE programas.nombre_prog LIKE "%'.$palabra_buscar.'%"
OR programas.descrip_larga LIKE "%'.$palabra_buscar.'%"
OR videos.descrip_larga LIKE "%'.$palabra_buscar.'%"
GROUP BY videos.id_video DESC LIMIT 10
2)我有另外一个在另一张桌子上打字的其他信息
SELECT * FROM videos
INNER JOIN contenidos1 ON videos.metadata = contenidos1.id_metadata
WHERE contenidos1.Title LIKE "%'.$palabra_buscar.'%"
OR contenidos1.Summary_Short LIKE "%'.$palabra_buscar.'%"
OR contenidos1.Summary_Long LIKE "%'.$palabra_buscar.'%"
OR contenidos1.Genre LIKE "%'.$palabra_buscar.'%" LIMIT 10
3)和这个查询
SELECT * FROM tableOfContents
WHERE tableOfContents .titulo LIKE "%'.$palabra_buscar.'%"
OR tableOfContents.descripcion LIKE "%'.$palabra_buscar.'%"
OR tableOfContents.categoria LIKE "%'.$palabra_buscar.'%"
GROUP BY tableOfContents.titulo LIMIT 10
答案 0 :(得分:0)
经过简短的谷歌搜索,你可以找到这个article,关于子查询,或者这个关于UNION的article。
在我看来,你应该选择Union,但是你需要确保从所有表中以相同的顺序选择相同的COLUMNS。您应该使用子查询作为最后一种选择。
顺便说一下。您应该为http://www.w3schools.com添加书签,以便将来参考基本的Web开发问题。
答案 1 :(得分:0)
好的,
首先,您必须为列提供相同的名称,如下所示:
而不是使用:
SELECT * FROM videos
SELECT * FROM tableOfContents
使用类似的东西:
SELECT name as col_name, title as col_title, image as col_image FROM videos
SELECT name as col_name, titlesss as col_title, imagesss as col_image FROM tableOfContents
您可以将任何给定名称用于新列名称 通过这个,你有相同的列名,然后你可以使用这样的联合:
SELECT name as col_name, title as col_title, image as col_image, 'First_Table' as table_name FROM videos
INNER JOIN programas_videos ON videos.id_video = programas_videos.id_video
INNER JOIN programas ON programas_videos.id_prog = programas.id_prog
WHERE programas.nombre_prog LIKE "%'.$palabra_buscar.'%"
OR programas.descrip_larga LIKE "%'.$palabra_buscar.'%"
OR videos.descrip_larga LIKE "%'.$palabra_buscar.'%"
GROUP BY videos.id_video DESC LIMIT 10
union
SELECT name as col_name, titlesss as col_title, imagesss as col_image, 'Second_Table' as table_name FROM tableOfContents
WHERE tableOfContents .titulo LIKE "%'.$palabra_buscar.'%"
OR tableOfContents.descripcion LIKE "%'.$palabra_buscar.'%"
OR tableOfContents.categoria LIKE "%'.$palabra_buscar.'%"
GROUP BY tableOfContents.titulo LIMIT 10
我添加了table_name
字段,因此您可以区分来自不同表的行。
您可以根据需要使用多个union
。
here you can find the complete union syntax