Selezione dei dati da 3 tabelle con limite
Domanda
Ho 3 tavoli PPC_Offerri, Survery_Offerri, Find_Offers (dalla sezione di amministrazione, inserisco i dati in queste tabelle)
Ora sul front End, voglio visualizzare le ultime 3 offerte da queste tabelle.
I.e.Ultimi 3 arriverà, possono essere da tavolo singolo o tavolini multipli ... ha solo condizioni "Ultimi 3"
Come posso fare questo?
La Laravel offre un modo per farlo?
o devo avere qualsiasi tavolo principale?
o puoi suggerirmi una normale query SQL per questo?
Aiuto. Grazie.
Tabella PPC:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
Tabella del sondaggio:
-------------------------
id | integer
title | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
Trova tabella del codice:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
code | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
. Soluzione
Come raccomandazione, potrebbe rendere più senso includere tutte e 3 queste offerte in una tabella e utilizzare un ID "Offer_type" per distinguerli l'uno dall'altro, invece di utilizzare 3 diverse tabelle.Potrebbe semplificare il tuo codice.
credo che questo possa funzionare con la tua configurazione corrente:
$ppc = DB::table('ppc_offers')
->select('title', 'url', 'description', 'NULL as code', 'updated_at');
$survey = DB::table('survey_offers')
->select('title', 'NULL as url', 'NULL as description', 'NULL as code', 'updated_at');
$find = DB::table('find_offers')
->select('title', 'url', 'description', 'code', 'updated_at');
return $ppc->unionAll($survey)->unionAll($find)
->orderBy('updated_at', 'desc')
->take(3)
->get();
. Altri suggerimenti
Crea 3 query Unione con gli stessi nomi per le colonne
select * from
(
(query1 order by id desc limit 3) x
union
(query2 order by id desc limit 3) y
union
(query3 order by id desc limit 3) z
.
(