SQL联接-如果联接的表不';我不能保存任何数据
我有一个将3个表连接在一起的查询。 一个是Spa预约表-(Spa预约,价格在) 第二个是SPAAPTADDONS——约会的插件(Nibbles等),APT和rst之间的链接 第三个是RSTCATALOG表-加载项价格所在的位置 查询:SQL联接-如果联接的表不';我不能保存任何数据,sql,join,Sql,Join,我有一个将3个表连接在一起的查询。 一个是Spa预约表-(Spa预约,价格在) 第二个是SPAAPTADDONS——约会的插件(Nibbles等),APT和rst之间的链接 第三个是RSTCATALOG表-加载项价格所在的位置 查询: SELECT SPAAPPOINTMENTS.APTID, SPAAPPOINTMENTS.SERVICECODE, SPAAPPOINTMENTS.LOCATIONCODE, SPAAPPOINTMENTS.STAFFCODE,
SELECT SPAAPPOINTMENTS.APTID, SPAAPPOINTMENTS.SERVICECODE, SPAAPPOINTMENTS.LOCATIONCODE, SPAAPPOINTMENTS.STAFFCODE,
SPAAPPOINTMENTS.BLOCKSTARTTIME, SPAAPPOINTMENTS.BLOCKENDTIME, SPAAPPOINTMENTS.I_RECID, SPAAPPOINTMENTS.S_STAYID,
SPAAPPOINTMENTS.STATUSCODE, SPAAPPOINTMENTS.BLOCKEDTIME, SPAAPPOINTMENTS.GRATUITY, SPAAPPOINTMENTS.TEMPHOLDID,
SPAAPPOINTMENTS.LASTCHGID, SPAAPPOINTMENTS.CANCELID, SPAAPPOINTMENTS.ITEMNO, SPAAPPOINTMENTS.COMMENTS,
SPAAPPOINTMENTS.OFFSITELOCATION, SPAAPPOINTMENTS.PRICE, SPAAPPOINTMENTS.PRIORITY, SPAAPPOINTMENTS.SPAPKGCODE,
SPAAPPOINTMENTS.ENFORCEGENDER, SPAAPPOINTMENTS.NEWSTATUS, SPAAPPOINTMENTS.RESTNO, SPAAPPOINTMENTS.DONOTMOVE,
SPAAPPOINTMENTS.NOSHOW, SPAAPPOINTMENTS.OTHERGENDERREQUESTED, SPAAPPOINTMENTS.MADEBY, SPAAPPOINTMENTS.LINKCODE,
SPAAPPOINTMENTS.CONFIRMED, SPAAPPOINTMENTS.CXLNUMBER, SPAAPPOINTMENTS.REQUEST, SPAAPPOINTMENTS.CUSTOMFIELD1,
SPAAPPOINTMENTS.CUSTOMFIELD2, SPAAPPOINTMENTS.CUSTOMFIELD3, SPAAPPOINTMENTS.VIP, SPAAPPOINTMENTS.NOPREFERENCE,
SPAAPPOINTMENTS.CUSTOMFIELD4, SPAAPPOINTMENTS.CUSTOMFIELD5, SPAAPPOINTMENTS.BOOKID, SPAAPPOINTMENTS.ARTSRESVNO,
SPAAPPOINTMENTS.LMSCONFNO, SPAAPPOINTMENTS.ARTSGUESTID, SPAAPPOINTMENTS.CLUBNO, SPAAPPOINTMENTS.MULTIGRPID,
SPAAPPOINTMENTS.MAINCONTACT, SPAAPPOINTMENTS.SPABKNAME, SPAAPPOINTMENTS.MULTIGRPAPPTXT, SPAAPPOINTMENTS.CONFCOMMENTS,
SPAAPPOINTMENTS.MEMCODE, SPAAPPOINTMENTS.FAMILYMEMTYPE, SPAAPPOINTMENTS.COCOMMENTS, SPAAPPOINTMENTS.GRPMASTERID,
SPAAPPOINTMENTS.GUESTTYPE, SPAAPPOINTMENTS.EXTUNIQUEID, SPAAPPOINTMENTS.SETUPTIME, SPAAPPOINTMENTS.BREAKDOWNTIME,
SPAAPPOINTMENTS.PSBASEPRICE, SPAAPPOINTMENTS.PSCODE, SPAAPPOINTMENTS.PSCALENDARADJPCT, SPAAPPOINTMENTS.PSDETAILADJ,
SPAAPPOINTMENTS.PSPRICE, SPAAPPOINTMENTS.PSDETAILADJSOURCE, SPAAPPOINTMENTS.PSDETAILADJTYPE, SPAAPPOINTMENTS.PSPRICETYPE,
RSTCATALOG.C_DPRICE
FROM SPAAPPOINTMENTS
INNER JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
INNER JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
这将返回约会表中的所有数据,只要他们有Spa约会的附加项
如果他们只是有一个约会,没有附加功能,它不会返回数据。
例如,如果我使用查询并将其后缀为:WHERE(spaaccessions.APTID=626746)
它没有显示任何数据,但SPAApportions中有一行,而addons表中没有任何内容
如果我使用另一个apid,它有一个插件,它会显示数据并从查询中输出
如果SPAAPTADONS表中没有数据,我如何显示数据?请任何人?更改下面的
内部联接
行
INNER JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
INNER JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
到左侧外部联接
类似
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
更改下面的
内部联接
行
INNER JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
INNER JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
到左侧外部联接
类似
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
更改下面的
内部联接
行
INNER JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
INNER JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
到左侧外部联接
类似
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
更改下面的
内部联接
行
INNER JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
INNER JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
到左侧外部联接
类似
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
让SPA约会中的所有数据都包含在结果中
让SPA约会中的所有数据都包含在结果中
让SPA约会中的所有数据都包含在结果中
让SPAAppointment中的所有数据都包含在结果中。将表连接在一起时,指定一个左表和一个右表。
内部联接将生成一个集合,其中联接条件对左侧和右侧都为真
您想要得到的是一个集合,其中包含来自左侧表的所有数据以及来自右侧的匹配数据。这是一个左连接
但是,由于您还想获得插件的定价信息,因此也需要加入第三个表。因为我们可以假设插件和定价表之间存在一对一的匹配,所以看起来我们可以在这里使用内部联接
,但这不起作用,因为联接是按顺序执行的,这意味着最后一个联接将使用第一个联接的结果作为其左侧(对于没有任何加载项的约会,该集合将具有空值)-如果我们尝试对定价表执行内部联接
,则这些行将被排除,因此这里也需要左联接
最后,你想要的是:
FROM SPAAPPOINTMENTS
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
另一方面,我建议您使用表别名,使查询更简短、更可读。类似如下:
FROM SPAAPPOINTMENTS apt
LEFT JOIN SPAAPPTADDONS add ON apt.APTID = add.APTID
LEFT JOIN RSTCATALOG rst ON add.ITEMNO = rst.C_ITEM
将表连接在一起时,指定一个左表和一个右表。内部连接将生成一个集合,其中左侧和右侧的连接条件均为true
您想要的是获得一个集合,该集合包含来自左侧表的所有数据以及来自右侧的匹配数据。这是一个左联接
但是,由于您还想获取加载项的定价信息,您也需要加入第三个表。由于我们可以假设加载项和定价表之间存在一对一的匹配,因此看起来我们可以在此处使用内部联接
,但这不起作用,因为联接是按顺序执行的,这意味着最后一次联接将是u将第一个联接的结果作为其左侧(该集合对于没有任何加载项的约会将具有空值)-如果我们尝试使用定价表执行内部联接
,则这些行将被排除,因此这里也需要左联接
最后,你想要的是:
FROM SPAAPPOINTMENTS
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
另一方面,我建议您使用表别名,使查询更简短、更可读。类似如下:
FROM SPAAPPOINTMENTS apt
LEFT JOIN SPAAPPTADDONS add ON apt.APTID = add.APTID
LEFT JOIN RSTCATALOG rst ON add.ITEMNO = rst.C_ITEM
将表连接在一起时,指定一个左表和一个右表。内部连接将生成一个集合,其中左侧和右侧的连接条件均为true
您想要的是获得一个集合,该集合包含来自左侧表的所有数据以及来自右侧的匹配数据。这是一个左联接
但是,由于您还想获取加载项的定价信息,您也需要加入第三个表。由于我们可以假设加载项和定价表之间存在一对一的匹配,因此看起来我们可以在此处使用内部联接
,但这不起作用,因为联接是按顺序执行的,这意味着最后一次联接将是u将第一个联接的结果作为其左侧(该集合对于没有任何加载项的约会将具有空值)-如果我们尝试使用定价表执行内部联接
,则这些行将被排除,因此这里也需要左联接
最后,你想要的是:
FROM SPAAPPOINTMENTS
LEFT JOIN SPAAPPTADDONS ON SPAAPPOINTMENTS.APTID = SPAAPPTADDONS.APTID
LEFT JOIN RSTCATALOG ON SPAAPPTADDONS.ITEMNO = RSTCATALOG.C_ITEM
另一方面,我建议您使用表别名,使查询更简短、更可读。类似如下:
FROM SPAAPPOINTMENTS apt
LEFT JOIN SPAAPPTADDONS add ON apt.APTID = add.APTID
LEFT JOIN RSTCATALOG rst ON add.ITEMNO = rst.C_ITEM
将表连接在一起时,指定一个左表和一个右表。内部连接将生成一个集合,其中左侧和右侧的连接条件均为true
您想要的是获得一个集合,该集合包含来自左侧表的所有数据以及来自右侧的匹配数据。这是一个左联接
但是,由于您还想获取加载项的定价信息,您也需要加入第三个表。由于我们可以假设加载项和定价表之间存在一对一的匹配,因此看起来我们可以在此处使用内部联接
,但这不起作用,因为联接是按顺序执行的,这意味着最后一次联接将是u将第一个联接的结果作为其左侧(该集合对于没有任何加载项的约会将具有空值)-如果我们尝试对定价表执行内部联接
,则这些行将被排除,