tablas ejemplos ejemplo consultas concatenar all sql database join sql-limit

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