es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando obtener múltiples intersecciones internas en mi SQL.

Estoy utilizando xampp con MySQL y he estado tratando de formatear una consulta que utiliza inner joins en 4 tablas separadas. El inner join contiene las tablas customer, bankaccounts, has y transactions. Has vincula las tablas de cuentas bancarias y clientes de M:N a 1:M, mientras que transactions está vinculada a las cuentas bancarias. He intentado la siguiente consulta:

SELECT t.TransactionID, 
       t.Description, 
       t.Amount, 
       t.isLoan, 
       t.TransactionDate, 
       a.AccountID, 
       a.SortCode, 
       a.Name, 
       a.CreationDate, 
       c.FirstName, 
       c.LastName,
       c.DateofBirth
FROM transactions AS t 
INNER JOIN bankaccounts AS a
     ON t.AccountID = a.AccountID
INNER JOIN has
     ON has.AccountID = a.AccountID
INNER JOIN customers AS c
     ON has.CustomerID = c.CustomerID
WHERE t.TransactionDate BETWEEN '2021-11-25' AND '2021-12-01';

Sin embargo, actualmente esto solo muestra un error.

Lo que necesito es vincular todas las tablas asegurando que solo se seleccionen las transacciones entre esas fechas específicas.

¿Hay alguna manera de resolver esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en mysql, join, phpmyadmin, xampp y mariadb, hay algunas posibles razones por las cuales la consulta dada está produciendo un error. Una posibilidad es que pueda haber un error de sintaxis o información faltante, como una coma faltante después de “c.LastName” o un rango de fechas faltante en la subconsulta. Además, podría ser útil verificar si todas las tablas y columnas están correctamente escritas, existen y coinciden con sus respectivos tipos de datos.

    Para vincular todas las tablas asegurándose de seleccionar solo transacciones entre esas fechas específicas, la consulta se podría actualizar con el siguiente código:

    SELECT t.TransactionID, 
           t.Description, 
           t.Amount, 
           t.isLoan, 
           t.TransactionDate, 
           a.AccountID, 
           a.SortCode, 
           a.Name, 
           a.CreationDate, 
           c.FirstName, 
           c.LastName,
           c.DateofBirth
    FROM transactions AS t 
    INNER JOIN bankaccounts AS a ON t.AccountID = a.AccountID 
    INNER JOIN has ON has.AccountID = a.AccountID  
    INNER JOIN customers AS c ON has.CustomerID = c.CustomerID
    WHERE t.TransactionDate BETWEEN '2021-11-25' AND '2021-12-01';
    

    En esta consulta actualizada:

    • Se ajustaron las conexiones para vincular adecuadamente las columnas necesarias de cada tabla.
    • Se agregó la cláusula WHERE para filtrar las transacciones por el rango de fechas deseado.

    Suponiendo que todas las tablas y columnas necesarias existen con los tipos de datos correctos, esta consulta actualizada debería devolver los resultados deseados.

Comments are closed.