ejemplos - union de tablas sql server
LIMITAR UNA UNIÓN DE SQL (3)
Como actualizar el servidor SQL no es una opción, puedo terminar haciendo dos consultas.
expenses = SELECT * FROM expense ... LIMIT x
foreach expenses as expense
expense.transactions = SELECT * FROM transacion WHERE transaction_expense_id = expense.expense_id
Estoy tratando de limitar la siguiente declaración SQL.
SELECT expense.*, transaction.* FROM expense
INNER JOIN transaction ON expense_id = transaction_expense_id
Lo que quiero hacer es limitar el número de filas "principales". ES DECIR. si hago un LÍMITE 1, recibiría solo un artículo de gasto, pero aún obtendría todas las transacciones asociadas con él.
¿Cómo se lograría esto?
En esta etapa, si hago LIMIT 1, obtengo un gasto y solo una transacción.
Deberá especificar qué artículo de gasto desea obtener. ¿El más caro? ¿El más nuevo? Luego únete contra una subconsulta que devuelve solo eso:
SELECT
expense.*, transaction.*, user.*
FROM
(SELECT * FROM expense WHERE ...) AS expense
INNER JOIN
transaction ON expense_id = transaction_expense_id
Entonces, suponiendo que podamos excluir la tabla de usuario, podría reescribirse como:
select * from expense, transaction where expense_id = transaction_expense_id
Ahora, si quiere aplicar un límite, puede hacerlo así:
select * from expense, transaction where expense_id = transaction_expense_id and
expense_id in (select expense_id from expense limit 1)
¿Eso haría lo que querías? Obviamente, debes ser cauteloso sobre el orden en el que volverán tus expenses_ids, por lo que probablemente quieras usar ORDER BY lo que sea.
Editar: dada la limitación de MySQL descrita en su comentario a continuación, tal vez esto funcione:
select * from (select id from expense order by WHATEVER limit 1) as t1, transaction where expense_id=transaction_expense_id;
Ben