Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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_Sql Server - Fatal编程技术网

Mysql SQL联接,不确定复杂查询中的确切语法

Mysql SQL联接,不确定复杂查询中的确切语法,mysql,sql,sql-server,Mysql,Sql,Sql Server,我试图匹配两位数据,添加到现有查询中 我希望这个问题本身能解释我想做什么。我遇到的问题是在破产时留下p.practices=practices.id SELECT DISTINCT i.id AS id, i.company AS company, i.insolvencyDate AS insolvency_date, i.cit

我试图匹配两位数据,添加到现有查询中

我希望这个问题本身能解释我想做什么。我遇到的问题是在破产时留下p.practices=practices.id

SELECT DISTINCT     i.id            AS  id,
                    i.company       AS  company,
                    i.insolvencyDate AS insolvency_date,
                    i.city          AS  city,
                    i.createdOn     AS  createdOn,
                    1               AS  rank_id,
                    t.entryCopy     AS  insolvency_type,
                    i.businessNature AS business_nature,
                    p.name          AS pract_comp_name,
                    'I'             AS  i_type 
    FROM     insolvencies i, 
        LEFT JOIN practitioners p ON insolvencies.practitioner = practitioners.id, 
        lookupcopy t 
    WHERE    i.checked   =  1    
        AND t.id     =  i.insolvencyType 
        AND i.insolvencyDate    >=  {ts '2010-01-22 00:00:00'} 
        AND i.insolvencyDate    <=  {ts '2011-10-20 00:00:00'} 
        AND (LOWER(p.name)   LIKE   '%Hodgsons%') 
    GROUP BY     id
选择不同的i.id作为id,
i、 公司作为公司,
i、 破产日期作为破产日,
i、 城市作为城市,
i、 createdOn作为createdOn,
1作为秩_id,
t、 entryCopy作为U类型,
i、 商业性质作为商业性质,
p、 名称为实际公司名称,
“I”作为I_类型
从破产案一开始,
LEFT JOIN Practices p ON资不抵债。practices=practices.id,
查找拷贝
其中i.checked=1
t.id=i.unsolvencytype
和i.UnsolvencyDate>={ts'2010-01-22 00:00:00'}

和i.insolvencyDate您需要删除
破产i,
后的逗号,以使
左联接
应用于该表,否则
左联接
将被视为交叉应用的独立表,这是无效的:

 FROM insolvencies i
          --        ^ remove comma
     LEFT JOIN...

问题是WHERE子句引用了左联接表

WHERE    i.checked   =  1    
        AND t.id     =  i.insolvencyType 
        AND i.insolvencyDate    >=  {ts '2010-01-22 00:00:00'} 
        AND i.insolvencyDate    <=  {ts '2011-10-20 00:00:00'} 
        AND (LOWER(p.name)   LIKE   '%Hodgsons%') 
其中i.checked=1
t.id=i.unsolvencytype
和i.UnsolvencyDate>={ts'2010-01-22 00:00:00'}

i.破产日期这里有许多问题。首先,我去掉逗号并正确地加入了lookupcopy。我不是100%确定你的最终目标,但从以下几点开始:

SELECT DISTINCT i.id AS id,  
                i.company AS company,  
                i.insolvencyDate AS insolvency_date,  
                i.city AS   city,  
                i.createdOn AS createdOn,  
                1 AS rank_id,  
                t.entryCopy AS insolvency_type,  
                i.businessNature AS business_nature,  
                p.name AS pract_comp_name,  
                'I' AS i_type  
    FROM insolvencies i
        INNER JOIN lookupcopy t  on (t.id = i.insolvencyType)
        LEFT JOIN practitioners p ON i.practitioner = p.id
    WHERE i.checked = 1   
        AND i.insolvencyDate >= {ts '2010-01-22 00:00:00'}  
        AND i.insolvencyDate <= {ts '2011-10-20 00:00:00'}  
        AND (LOWER(p.name)   LIKE '%Hodgsons%')  
    GROUP BY id 
选择不同的i.id作为id,
i、 公司作为公司,
i、 破产日期作为破产日,
i、 城市作为城市,
i、 createdOn作为createdOn,
1作为秩_id,
t、 entryCopy作为U类型,
i、 商业性质作为商业性质,
p、 名称为实际公司名称,
“I”作为I_类型
破产一案
内部联接查找副本t on(t.id=i.UnsolvencyType)
在i.practices=p.id上左连接practices p
其中i.checked=1
和i.UnsolvencyDate>={ts'2010-01-22 00:00:00'}

i.UnsolvencyDate我想你在寻找这样的东西:

SELECT DISTINCT i.id AS id
     , i.company AS company
     , i.insolvencyDate AS insolvency_date
     , i.city AS city
     , i.createdOn AS createdOn
     , 1 AS rank_id
     , t.entryCopy AS insolvency_type
     , i.businessNature AS business_nature
     , p.name AS pract_comp_name
     , 'I'     AS i_type 
  FROM insolvencies i
  LEFT JOIN practitioners p ON insolvencies.practitioner = practitioners.id
  CROSS JOIN lookupcopy t 
  WHERE i.checked   =  1    
    AND t.id     =  i.insolvencyType 
    AND i.insolvencyDate    >=  {ts '2010-01-22 00:00:00'} 
    AND i.insolvencyDate    <=  {ts '2011-10-20 00:00:00'} 
    AND (LOWER(p.name)   LIKE   '%Hodgsons%') 
GROUP BY id
选择不同的i.id作为id
,即公司作为公司
,i.破产日期作为破产日
,即城市为城市
,i.createdOn作为createdOn
,1作为秩_id
,t.entryCopy作为U类型
,即商业性质为商业性质
,p.名称为实际公司名称
“I”作为I_类型
破产一案
LEFT JOIN Practices p ON资不抵债。Practices=Practices.id
交叉连接查找拷贝
其中i.checked=1
t.id=i.unsolvencytype
和i.UnsolvencyDate>={ts'2010-01-22 00:00:00'}

i.insolvencyDate在MySQL中的
中,交叉连接在语法上等同于内部连接(它们可以相互替换)
因此,在SQL读取后编写的内容有点有趣是的,但最好了解它们的区别并根据标准使用。并不是所有的RDBMS都是MYSQL:)Conrad说,这是一个完美的例子,说明了为什么混合使用ANSI-86和ANSI-92样式的联接在我的技术水平上可能不是一个很好的理想帮助。谢谢