以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  sql语句出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=44306)

--  作者:yankunhao
--  发布时间:2013/12/27 14:10:00
--  sql语句出错

有如下的语句子,为什么会出错?

SELECT parent_part as 内部编码,child_part,Left(unit_qty,4) As 数量,bom_sort As 排序,{ov_part}.item_no As 物料编码,{ov_part}.part_name As 名称,{ov_part}.part_spec As 规格,{obas_part1}.bom_draw_no As 图号,{obas_part1}.bom_draw_no_wf as 备注,wf_zh as 珠号,{obas_part1}.bom_cbdj as 单价,bomjj as 金额,{obas_part1}.bom_cbdjrem as 价格备注,base_name as 单位 ((from {obom_stru2} INNER JOIN {ov_part} on {obom_stru2}.child_part = {ov_part}.part_no) INNER JOIN {obas_part1} on {obom_stru2}.child_part = {obas_part1}.part_no) INNER JOIN {obas_base_code} on {ov_part}.bom_unit_no = {obas_base_code}.base_code where {obas_base_code}.code_type = \'115\'and parent_part = \'O0000000000000025153\' ORDER BY 排序

 

 


图片点击可在新窗口打开查看此主题相关图片如下:出错1.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2013/12/27 14:12:00
--  

SELECT parent_part as 内部编码,child_part,Left(unit_qty,4) As 数量,bom_sort As 排序,{ov_part}.item_no As 物料编码,{ov_part}.part_name As 名称,{ov_part}.part_spec As 规格,{obas_part1}.bom_draw_no As 图号,{obas_part1}.bom_draw_no_wf as 备注,wf_zh as 珠号,{obas_part1}.bom_cbdj as 单价,bomjj as 金额,{obas_part1}.bom_cbdjrem as 价格备注,base_name as 单位 ((from {obom_stru2} INNER JOIN {ov_part} on {obom_stru2}.child_part = {ov_part}.part_no) INNER JOIN {obas_part1} on {obom_stru2}.child_part = {obas_part1}.part_no) INNER JOIN {obas_base_code} on {ov_part}.bom_unit_no = {obas_base_code}.base_code where {obas_base_code}.code_type = \'115\'and parent_part = \'O0000000000000025153\' ORDER BY 排序

 


SQL没有这样的语法,上例子,说清楚你要实现的需求.


--  作者:yankunhao
--  发布时间:2013/12/27 14:14:00
--  
说明中不是说:有多个JOIN语句的情况下,靠前的JOIN语句要用圆括号括起来
--  作者:yankunhao
--  发布时间:2013/12/27 14:16:00
--  
说明中的有关多表查询:

语法:

SELECT 字段列表 FROM {表1} INNER JOIN {表2} ON {表1}.列名 = {表2}.列名

ON关键词指定两个表通过哪一列进行连接,指定的字段必须具备相同的数据类型和长度。

如果某个字段在不止一个表中出现,必须在Select语句中明确表的名称,格式为: {表名}.列名

示例:

SELECT {订单明细}.*, 产品名称 FROM {订单明细} INNER JOIN {产品} ON {订单明细}.产品ID = {产品}.产品ID ORDER BY 订单ID

上述语句生成的查询表,包括订单明细的所有列,以及该订单明细对应的产品名称(来源于产品表)

 

SELECT 订购日期,公司名称,产品名称, 数量, {订单明细}.单价, 折扣, (数量 * {订单明细}.单价 * (1-折扣)) AS 金额 FROM (({订单明细} INNER JOIN {产品} ON {订单明细}.产品ID = {产品}.产品ID) INNER JOIN {订单} ON {订单明细}.订单ID = {订单}.订单ID) INNER JOIN {客户} ON {订单}.客户ID = {客户}.客户ID

 

 

此外,在有多个JOIN语句的情况下,靠前的JOIN语句要用圆括号括起来,如前面的例子所示。


--  作者:yankunhao
--  发布时间:2013/12/27 14:18:00
--  
那么我这个语句又有什么错的呢?
--  作者:Bin
--  发布时间:2013/12/27 14:26:00
--  
请上例子. 另外你使用的是MSSQL 还是ACCESS呢?
--  作者:yankunhao
--  发布时间:2013/12/27 14:27:00
--  
我使用的是SQL Server,这也不用什么例子吧,从语句里不是可以看得出语法是否符合FB的吗?
[此贴子已经被作者于2013-12-27 14:28:56编辑过]

--  作者:Bin
--  发布时间:2013/12/27 14:30:00
--  
SELECT parent_part as 内部编码,child_part,Left(unit_qty,4) As 数量,bom_sort As 排序,{ov_part}.item_no As 物料编码,{ov_part}.part_name As 名称,{ov_part}.part_spec As 规格,{obas_part1}.bom_draw_no As 图号,{obas_part1}.bom_draw_no_wf as 备注,wf_zh as 珠号,{obas_part1}.bom_cbdj as 单价,bomjj as 金额,{obas_part1}.bom_cbdjrem as 价格备注,base_name as 单位 (((from {obom_stru2} INNER JOIN {ov_part} on {obom_stru2}.child_part = {ov_part}.part_no) INNER JOIN {obas_part1} on {obom_stru2}.child_part = {obas_part1}.part_no) INNER JOIN {obas_base_code} on {ov_part}.bom_unit_no = {obas_base_code}.base_code) where {obas_base_code}.code_type = \'115\'and parent_part = \'O0000000000000025153\' ORDER BY 排序

还是不行请上例子,纸上不谈兵!

--  作者:yankunhao
--  发布时间:2013/12/27 14:36:00
--  
那请问红色的部份有什么问题?你都标出了,可以简单说一下你的看法嘛
--  作者:Bin
--  发布时间:2013/12/27 14:41:00
--  
请问你复制我的SQL语句后是否正常运作了?