Hey, ho 2 tabelle di PostgreSQL:PostgreSQL, Selezionare tra 2 tavoli, ma solo l'ultimo elemento da tabella 2
1 - documents: id, title
2 - updates: id, document_id, date
e alcuni dati:
documenti:
| 1 | Test Title |
aggiornamenti:
| 1 | 1 | 2006-01-01 |
| 2 | 1 | 2007-01-01 |
| 3 | 1 | 2008-01-01 |
Quindi tutti gli aggiornamenti puntano allo stesso documento, ma tutti con date diverse per gli aggiornamenti.
Quello che sto cercando di fare è fare una selezione dalla tabella dei documenti, ma anche includere l'ultimo aggiornamento basato sulla data.
Come dovrebbe apparire una query come questa? Questo è quello che ho attualmente, ma sto elencando tutti gli aggiornamenti, e non l'ultimo uno come quello che ho bisogno:
SELECT * FROM documents,updates WHERE documents.id=1 AND documents.id=updates.document_id ORDER BY date
Per includere; Il motivo per cui ho bisogno di questo nella query è che voglio ordinare per data dal modello di aggiornamento!
Edit: Questo script è fortemente semplificato, quindi dovrei essere in grado di creare una query che restituisce un numero qualsiasi dei risultati, ma compreso l'ultimo data aggiornata. Stavo pensando di usare un join interno o un join a sinistra o qualcosa del genere in questo modo !?
No, come scritto al momento, questo non funzionerà. La sottoquery restituisce la "data" più recente dall'intera tabella degli aggiornamenti a prescindere dal documento, pertanto questo produrrà risultati solo se i documenti che si selezionano sono stati aggiornati alla data dell'aggiornamento più recente. – pilcrow
Sei corretto. La sottoquery dovrebbe leggere SELECT MAX (data) Da aggiornamenti dove id = 1) –