内部连接到3个表但没有显示任何内容

时间:2015-01-14 22:45:21

标签: mysql sql inner-join

有3个这样的表:

mysql> describe detoc;
+-----------+--------------+------+-----+------------+----------------+
| Field     | Type         | Null | Key | Default    | Extra          |
+-----------+--------------+------+-----+------------+----------------+
| registro  | int(12)      | NO   | PRI | NULL       | auto_increment |
| ordcomp   | int(12)      | NO   | MUL | 0          |                |
| requis    | int(12)      | YES  | MUL | 0          |                |
| requisnum | int(12)      | YES  |     | 0          |                |
| material  | char(6)      | YES  | MUL |            |                |
| cantidad  | double(18,7) | YES  |     | 0.0000000  |                |
| unidad    | char(7)      | YES  |     |            |                |
| presest   | double(18,7) | YES  |     | 0.0000000  |                |
| unidadpre | char(7)      | YES  |     |            |                |
| surtido   | double(18,7) | YES  |     | 0.0000000  |                |
| cerrada   | tinyint(1)   | YES  |     | 0          |                |
| costo     | double(18,7) | YES  |     | 0.0000000  |                |
| impuesto  | double(18,7) | YES  |     | 0.0000000  |                |
| fechalta  | date         | YES  |     | 0000-00-00 |                |
| usuarmod  | char(6)      | YES  |     |            |                |
| fechamod  | date         | YES  |     | 0000-00-00 |                |
+-----------+--------------+------+-----+------------+----------------+
16 rows in set (0.02 sec)

mysql> describe ordenescompra;
+------------+------------+------+-----+------------+----------------+
| Field      | Type       | Null | Key | Default    | Extra          |
+------------+------------+------+-----+------------+----------------+
| registro   | int(12)    | NO   | PRI | NULL       | auto_increment |
| clave      | int(12)    | NO   | MUL | 0          |                |
| area       | char(6)    | NO   | MUL |            |                |
| usuariocre | char(6)    | NO   | MUL |            |                |
| cveprov    | char(6)    | YES  |     |            |                |
| fechacomp  | char(10)   | YES  |     |            |                |
| emailconf  | tinyint(1) | YES  |     | 0          |                |
| confprov   | tinyint(1) | YES  |     | 0          |                |
| cerrada    | tinyint(1) | YES  |     | 0          |                |
| fechalta   | date       | YES  |     | 0000-00-00 |                |
| usuarmod   | char(6)    | YES  |     |            |                |
| fechamod   | date       | YES  |     | 0000-00-00 |                |
+------------+------------+------+-----+------------+----------------+
12 rows in set (0.02 sec)

mysql> describe materiales;
+-----------+--------------+------+-----+------------+----------------+
| Field     | Type         | Null | Key | Default    | Extra          |
+-----------+--------------+------+-----+------------+----------------+
| registro  | int(12)      | NO   | PRI | NULL       | auto_increment |
| clave     | char(6)      | NO   | UNI |            |                |
| clave2    | char(20)     | YES  | MUL |            |                |
| descr     | char(30)     | YES  |     |            |                |
| descr2    | char(250)    | YES  |     |            |                |
| unidad    | char(7)      | YES  |     |            |                |
| presest   | double(18,7) | YES  |     | 0.0000000  |                |
| unidadpre | char(7)      | YES  |     |            |                |
| codbar    | char(30)     | YES  |     |            |                |
| impuesto  | double(18,7) | YES  |     | 0.0000000  |                |
| mantpend  | tinyint(1)   | YES  |     | 0          |                |
| grupplat  | char(6)      | YES  | MUL |            |                |
| fechalta  | date         | YES  |     | 0000-00-00 |                |
| usuarmod  | char(6)      | YES  |     |            |                |
| fechamod  | date         | YES  |     | 0000-00-00 |                |
+-----------+--------------+------+-----+------------+----------------+

我需要显示数据,但不返回任何内容,语法为:

SELECT * FROM DETOC INNER JOIN MATERIALES  
            ON DETOC.MATERIAL = MATERIALES.CLAVE 
        INNER JOIN ORDENESCOMPRA
            ON DETOC.ORDCOMP = ORDENESCOMPRA.CLAVE  

            WHERE MATERIALES.CLAVE>='      ' 
            AND MATERIALES.CLAVE<='ZZZZZZ' 
            AND MATERIALES.GRUPPLAT>='      ' 
            AND MATERIALES.GRUPPLAT<='ZZZZZZ'
            AND ORDENESCOMPRA.CLAVE>='            '
            AND ORDENESCOMPRA.CLAVE<='999999999999'
             ORDER BY ;

我也尝试了这种语法,但我有一个错误要显示,因为它们的列数不同......

(SELECT * FROM DETOC  
  INNER JOIN ORDENESCOMPRA  
  ON DETOC.ORDCOMP = ORDENESCOMPRA.CLAVE    

  WHERE ORDENESCOMPRA.CLAVE>="8780" 
    AND ORDENESCOMPRA.CLAVE<="8790"
    ORDER BY CLAVE)

UNION

  (SELECT * FROM DETOC
   INNER JOIN MATERIALES 
    ON DETOC.MATERIAL = MATERIALES.CLAVE
    WHERE MATERIALES.CLAVE>="" 
    AND MATERIALES.CLAVE<="" 
    AND MATERIALES.GRUPPLAT>="      "
    AND MATERIALES.GRUPPLAT<="      ")

任何人都可以帮助我???

1 个答案:

答案 0 :(得分:1)

在将UPPERMATERIALES.CLAVE与其上限进行比较时,请尝试使用MATERIALES.GRUPPLAT功能,如下面的查询所示:

SELECT 
    * 
FROM 
    DETOC 
    INNER JOIN MATERIALES  
               ON DETOC.MATERIAL = MATERIALES.CLAVE 
    INNER JOIN ORDENESCOMPRA
               ON DETOC.ORDCOMP = ORDENESCOMPRA.CLAVE  
WHERE 
    MATERIALES.CLAVE >= '      ' 
    AND UPPER(MATERIALES.CLAVE) <= 'ZZZZZZ' 
    AND MATERIALES.GRUPPLAT >= '      ' 
    AND UPPER(MATERIALES.GRUPPLAT) <= 'ZZZZZZ'
    AND ORDENESCOMPRA.CLAVE >= '            '
    AND ORDENESCOMPRA.CLAVE <= '999999999999';

我不确定这是否会解决您的问题,但我确定在MATERIALES.CLAVE中会有{value AABBcc,但查询会排除来自结果集。

希望它有所帮助。