Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取结果的sql查询_Mysql_Sql - Fatal编程技术网

Mysql 获取结果的sql查询

Mysql 获取结果的sql查询,mysql,sql,Mysql,Sql,我有两张桌子 1) 国家代码: 2) CCT编号: 发行 当我执行以下查询时: SELECT * FROM CCTONUMBERS LEFT JOIN COUNTRYCODES AS CC ON CCTONUMBERS.COUNTRYCODE_ID = CC.ID WHERE ( CC.PARENTID = 0 AND NUMBER LIKE "93%" ) OR ( CC.PARENTID !=

我有两张桌子 1) 国家代码:

2) CCT编号:

发行

当我执行以下查询时:

SELECT * 
FROM   CCTONUMBERS 
       LEFT JOIN COUNTRYCODES AS CC 
              ON CCTONUMBERS.COUNTRYCODE_ID = CC.ID 
WHERE  ( CC.PARENTID = 0 
         AND NUMBER LIKE "93%" ) 
        OR ( CC.PARENTID != 0 
             AND NUMBER LIKE "7%" 
             AND CC.PARENTID IN (SELECT CC.ID 
                                 FROM   CCTONUMBERS 
                                        LEFT JOIN COUNTRYCODES AS CC 
                                               ON 
                                        CCTONUMBERS.COUNTRYCODE_ID = CC.ID 
                                 WHERE  CC.PARENTID = 0 
                                        AND NUMBER LIKE "93%") ) 
ORDER  BY CCTONUMBERS.NUMBER ASC 
LIMIT  0, 20 
我得到的结果如下

我要寻找的结果是,当我在拨号代码中搜索7时,我应该只得到以7开头的拨号代码(请参阅cctonumbers中的数字列),但根据屏幕截图,我在拨号代码列中也得到了“93”,这是不正确的

请告诉我上述sql查询中是否存在问题。请参阅上面的表格屏幕截图,了解您使用或使用的表格详细信息

(CC.parentid=0,数字如“93%”)或(CC.parentid!=0,数字如“7%”和…

这表明如果有任何值为93..的数字,那么它们也将通过查询获取


cctonumbers表的最后一行满足此条件,其中parentid为0,数字为93。

您在where子句的第一部分(OR之前的部分)明确询问数字为93的国家。这就是为什么您得到的阿富汗拨号代码为93。

可能
CC.parentid=0,数字类似于“93%”
这段代码为您提供了
93
结果。只是对您的数据库设计作了一个离题的评论:您有一个名为countrycodes的表,其中包含国家和国家的移动网络,这似乎很奇怪。然后您甚至对ID和父ID使用递归设计-因此,移动网络下甚至还有一些东西?然后是您的cctonumbers表也是递归设计的,但似乎parants和children只是镜像countrycodes中的链接,而不是链接不同的内容。当然,我不知道您到底想在数据库中映射什么,但您可能想再次查看您的数据库设计。您能解释一下您的确切要求吗。我是I’我无法理解您希望从查询中获得什么输出。如果有助于您解决问题,请务必接受答案。查看接受答案的工作原理:我知道我们在查询中遇到了带有“或”的问题条件..我们应该如何编写查询以获得所需的结果。让我详细说明这个问题..我们需要以7开头的拨号代码,并且其父id为93。因此基本上,如果我们在国家代码中搜索93,则将显示所有结果,包括93,如果我也在拨号代码中搜索7(这里是a和条件)然后我们应该得到以7开头的拨号代码记录,并且国家代码是93。请参考上表cctonumbers,countrycodes进行澄清。请向我发送您的创建查询,插入查询,我可以尝试为您的问题提供解决方案。您可以使用SqlFIDLE提供您的查询。显然,与乌兰不同,我无法理解e要求。OR后面的部分为您提供的移动网络的拨号代码以7开头,并且属于拨号代码以93开头的国家。这不是您想要的吗?您还希望在结果列表中包含什么?人们忘记了我的查询。它100%错了:)。。。如果你看到前端的屏幕截图,如果我搜索afg,它会显示以afg开始的所有国家的列表(即阿富汗),其国家代码为93,拨号代码也为93。(如果你参考了那里的表。现在,如果我搜索以7开头的拨号代码,那么我不希望在过滤结果中看到拨号代码中的93。让我知道是否有任何解决方法。请按上述方式检查表,并让我知道获取结果的sql查询。正确的..上面的表设计虽然不是最好的…但我们正在进行项目,因此我们必须继续现有的工作,不能改变表格结构,因为这需要很长时间。请参阅我在umang回答下的评论。我不理解您对结果集的期望。