我有这个问题
这些是我的表
tableA,B和C
我在tableA和TableB字段名cli_id中有一个art_clie,我用它做内连接,然后TableB中的字段cli_pven尝试使用BETWEEN niv_inic和niv_fina字段TableC
我只在这个cli_pven的值介于1和50之间时工作 如果没有显示间隔,我会得到更大的结果。 那个suecede? 我希望你能帮忙
这是我在存储过程中的查询代码:
SELECT *, tablaC.`niv_nimg`
FROM tablaA INNER JOIN (
tablaB LEFT JOIN tablaC
ON tablaB.`cli_pven` BETWEEN tablaC.`niv_inic` AND tablaC.`niv_fina`
) ON tablaA.`art_clie` = tablaB.`cli_id`;
西班牙语edito paralaversiónenespañol:
内部联接en otro内部联接con consulta de
en tablaA tengo un campo art_clie y en la tablaB otro de nombre cli_id,con los cuales hago un inner join,luego con el campo cli_pven de la tablaB intente hacer un between con los campos niv_inic y niv_fina de la tablaC
me funciona solo cuando el valor de cli_pven esta entre los intervalos de 1 y 50 si el valos es mayor no me muestra resultados。 que suecede? espero puedan ayudarme
este es mi codigo de consulta en un proceso almacenado:
SELECT *, tablaC.`niv_nimg`
FROM tablaA INNER JOIN (
tablaB LEFT JOIN tablaC
ON tablaB.`cli_pven` BETWEEN tablaC.`niv_inic` AND tablaC.`niv_fina`
) ON tablaA.`art_clie` = tablaB.`cli_id`;
答案 0 :(得分:0)
好的,我认为我有它,并会尽量简化,因为英语只是来自翻译。
你有TableA是每个客户的艺术(图纸,图片等)的集合。 TableC具有基于一系列值(niv_inic和niv_fina)的图像名称(a.png,b.png,c.png等)。根据TableB.cli_pven中的值,您需要与合格范围记录相关的记录。
为了简化查询的可读性,我使用表的ALIAS名称,因为我认为您只是为了这篇文章的简单示例目的而更改了名称。
select
a.*,
c.niv_nimg
from
TablaA a
JOIN TablaB b
on a.art_clie = b.cli_id
LEFT JOIN TablaC c
on b.cli_pven BETWEEN c.niv_inic AND c.niv_fina
注意表格之间连接的简单分层a - > b,然后b - >角
我认为你用额外的括号使它复杂化导致错误的查询语法 现在,图像名称应该返回空白的唯一时间是任何小于1或大于250的“cli_prev”值,即TablaC的最大范围。
我实际上使它成为LEFT-JOIN而不仅仅是“JOIN”(内连接),以允许您确认您获得所有可能的行,并且它们应该或不应该是返回的匹配图像。准备好后,您可以随时将其更改回“JOIN”。