内连接与另一个内连接查询之间

时间:2013-12-17 23:38:17

标签: mysql stored-procedures

英文

我有这个问题

这些是我的表

tableA,B和C

enter link description here

我在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:

el codigo corregido seria asi:

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`;

1 个答案:

答案 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”。