SQL - Select de 3 tablas distintas.

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Select de 3 tablas distintas.

Publicado por Juan (7 intervenciones) el 15/08/2018 10:03:14
Buenos dias, quiero hacer un select de tres tablas distintas y no lo consigo. Os dejo la sentencia SQL para que me digas que esta mal.

"SELECT ALQUILER.NIF, ALQUILER.IDENTIFICADOR, ALQUILER.FECHA, "
+ "ARTICULOS.IDENTIFICADOR, ARTICULOS.TITULO, ARTICULOS.ADULTO, ARTICULOS.ALQUILADO "
+ "CLIENTES.NIF, CLIENTES.NOMBRE, CLIENTES.APELLIDOS, CLIENTES.NACIMIENTO "
+ "FROM ALQUILER "
+ "INNER JOIN ALQUILER ON ALQUILER.IDENTIFICADOR = ARTICULOS.IDENTIFICADOR"
+ "INNER JOIN ALQUILER ON ALQUILER.NIF = CLIENTES.NIF";

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Select de 3 tablas distintas.

Publicado por Juan (7 intervenciones) el 15/08/2018 11:09:37
He modificado el código ahora es el siguiente:
"SELECT ALQUILER.NIF, ALQUILER.IDENTIFICADOR, ALQUILER.FECHA, "
+ "ARTICULOS.IDENTIFICADOR, ARTICULOS.TITULO, ARTICULOS.ADULTOS, ARTICULOS.ALQUILADO, "
+ "CLIENTES.NIF, CLIENTES.NOMBRE, CLIENTES.APELLIDOS, CLIENTES.NACIMIENTO "
+ "FROM ALQUILER, ARTICULOS, CLIENTES "
+ "INNER JOIN ARTICULOS ON ALQUILER.IDENTIFICADOR = ARTICULOS.IDENTIFICADOR "
+ "INNER JOIN CLIENTES ON ALQUILER.NIF = CLIENTES.NIF";

Pero me da el siguiente error:

Not unique table/alias: 'ARTICULOS'

Alguna idea?
Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 37
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Select de 3 tablas distintas.

Publicado por Jorge (19 intervenciones) el 15/08/2018 21:22:38
en la primera pones
from ALQUILER inner join ALQUILER on... inner join ALQUILER on...
error: aquí estas usando solo la tabla de alquiler

en la segunda pones
from ALQUILER, ARTICULOS, CLIENTES inner join ARTICULOS on... inner join CLIENTES on...
error: aquí estas usando las tres tablas, pero luego vuelve a usar la tabla articulos y la tabla clientes con el mismo nombre (sin ser alias)

Si solo quieres usar las tres tablas debería ser
From ALQUILER inner join ARTICULOS on... inner join CLIENTES on...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Select de 3 tablas distintas.

Publicado por Juan (7 intervenciones) el 16/08/2018 00:49:19
Muchas gracias Jorge, gracias a ti lo he solucionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Select de 3 tablas distintas.

Publicado por Juan (7 intervenciones) el 16/08/2018 01:15:48
Otra pregunta Jorge. Tengo la función para leer en la base de datos , ahora se conecta bien y la sentencia funciona pero cuando empiezo a leer los datos se va directamente al finally. Te pongo la función.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public static HashMap<String, Alquiler> filtrarTodosAlquileres() throws Exception {
    DataSource data = null;
    ResultSet rs = null;
    PreparedStatement st;
    st = null;
 
    HashMap<String, Alquiler> hashAlquileres = new HashMap<String, Alquiler>();
 
    try {
        data = new DataSource();
        st = data.getStatement(QUERY);
        rs = data.ejecutarSelect(st);
        while (rs.next()) {
            Alquiler objAlquiler = new Alquiler();
            //Cuando ejecuta esta linea se va al finally. objAlquiler.getArticulo().setIdentificador(rs.getInt(4));
            objAlquiler.getArticulo().setNombre(rs.getString(5));
            objAlquiler.getArticulo().setMas18(rs.getBoolean(6));
            objAlquiler.getArticulo().setAlquilado(rs.getBoolean(7));
            objAlquiler.getCliente().setNif(rs.getString(8));
            objAlquiler.getCliente().setNombre(rs.getString(9));
            objAlquiler.getCliente().setApellidos(rs.getString(10));
            objAlquiler.getCliente().setNacimiento(rs.getDate(11));
            objAlquiler.setFecha(rs.getDate(3));
            hashAlquileres.put(objAlquiler.getCliente().getNif(), objAlquiler);
        }
        rs.close();
        return hashAlquileres;
    } catch (SQLException ex) {
        System.err.println(ex.getMessage());
        throw new Exception(ex.getMessage());
    } finally {
        if (rs != null) {
            rs.close();
        }
        if (st != null) {
            st.close();
        }
        if (data != null) {
            data.cerrarConexion();
        }
    }
}

Me puedes ayudar?
Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

ACELERAR TU CONSULTA

Publicado por Juan Enrique (5 intervenciones) el 24/08/2018 20:35:01
Cuando las consultas arrojan mucha informacion, y estas utilizando el join puedes modificarlo y duraran una nada de la siguiente forma
cambia la parte del from y los inner join por las siguientes lineas




+ "FROM ALQUILER ,ALQUILER,ALQUILER"
+"where (ALQUILER.IDENTIFICADOR = ARTICULOS.IDENTIFICADOR)"
+ "and (ALQUILER.NIF = CLIENTES.NIF)";

vale la pena cuando tus consultas son muchas intentenlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar