首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从多个表中搜索父内容?

如何从多个表中搜索父内容?
EN

Stack Overflow用户
提问于 2017-10-24 01:45:19
回答 1查看 27关注 0票数 0

表-家长

代码语言:javascript
复制
+----+----------+--------------+----------+
| id | user_id  | content_type |  name    |
+----+----------+--------------+----------+
|  1 | 10       | 1            | name - 1 |
|  2 | 12       | 2            | name - 2 |
+----+----------+--------------+----------+

content_type可以是

代码语言:javascript
复制
1 = Single part(movies)
2 = Multi prt(serials, episode)

表-儿童

代码语言:javascript
复制
+----+------------+--------------+--------------+-----------+
| id | parent_id  | is_episode   | episode_name | file_name |
+----+------------+--------------+--------------+-----------+
|  1 | 1          | 0            | NULL         | movie.mp4 |
|  2 | 2          | 0            | NULL         | zee.mp4   |
|  3 | 2          | 1            | cname-2      | lil-1.mp4 |
|  4 | 2          | 1            | child-2      | lil-2.mp4 |
+----+------------+--------------+--------------+-----------+

is_episode可以是:

代码语言:javascript
复制
0 = No
1 = Yes

注意:我跳过的其他一些字段

我的问题是:

代码语言:javascript
复制
SELECT F.id,F.user_id,F.content_type,F.name,M.is_episode, M.episode_name, M.file_name 
FROM childs M,parents F 
WHERE  M.parent_id = F.id AND M.is_episode=0 AND 
(F.name LIKE '%child%' OR M.episode_name LIKE '%child%' ) 

Abve MySQL查询我得到0条记录。有1个内容

我的搜索字符串是基于parents.namechilds.episode_name应用的,我想获取所有记录,如果我搜索is_episode=0,则查找当前记录的父内容。下面是我应该得到的输出

代码语言:javascript
复制
+----+----------+----------------+----------+------------+--------------+-----------+
| id | user_id  | content_type   | name     | is_episode | episode_name | file_name |
+----+----------+----------------+----------+------------+--------------+-----------+
|  2 | 12       | 2              | name - 2 | 0          | NULL         | zee.mp4   |
+----+----------+----------------+----------+------------+--------------+-----------+

输出:

代码语言:javascript
复制
In above my  two tables my output should come following criterias

如果我按name LIKE '%name%'进行搜索,输出应该是

代码语言:javascript
复制
+----+----------+----------------+----------+------------+--------------+
| id | user_id  | content_type   | name     | is_episode | episode_name |
+----+----------+----------------+----------+------------+--------------+
|  1 | 10       | 1              | name - 1 | 0          | NULL         |
|  2 | 12       | 2              | name - 2 | 0          | NULL         |
+----+----------+----------------+----------+------------+--------------+

如果按name LIKE '%cname%'name LIKE '%name - 2%'name LIKE '%child%'进行搜索,则输出应为

代码语言:javascript
复制
+----+----------+----------------+----------+------------+--------------+
| id | user_id  | content_type   | name     | is_episode | episode_name |
+----+----------+----------------+----------+------------+--------------+
|  2 | 12       | 2              | name - 2 | 0          | NULL         |
+----+----------+----------------+----------+------------+--------------+

如果我按name LIKE '%name - 1%'进行搜索,输出应该是

代码语言:javascript
复制
+----+----------+----------------+----------+------------+--------------+
| id | user_id  | content_type   | name     | is_episode | episode_name |
+----+----------+----------------+----------+------------+--------------+
|  1 | 10       | 1              | name - 1 | 0          | NULL         |
+----+----------+----------------+----------+------------+--------------+

如果我按name LIKE '%child%'进行搜索,输出应该是

代码语言:javascript
复制
+----+----------+----------------+----------+------------+--------------+
| id | user_id  | content_type   | name     | is_episode | episode_name |
+----+----------+----------------+----------+------------+--------------+
|  2 | 12       | 2              | name - 2 | 0          | NULL         |
+----+----------+----------------+----------+------------+--------------+

我无法获得我的查询的正确输出。你能写下对我所有的输出都满意的查询吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 05:13:28

您的问题是,您只过滤掉了包含Is_episode = 0的行,但是您需要搜索包含is_episode = 1的行,如cname-2child-2

你的问题是因为is_episode = 0引起的,删除它,它应该可以工作。如果您仍然有问题,请留言。

更新:根据你的评论,基于我的理解,我认为你可能需要一些基于table的多queries和分隔,或者你的logic/conditions,然后union结果一起。

代码语言:javascript
复制
select .. from parent, child .. where is_episode = 0 and name like ... 
union 
select .. from child join parent where episode_name like ...  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46895469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档