Back to top

Autore Topic: Join database con risultati multipli  (Letto 2959 volte)

Offline ArroWeb

  • Nuovo arrivato
  • *
  • Post: 3
    • Mostra profilo
Join database con risultati multipli
« il: 31 Dic 2016, 19:47:55 »
  Salve avrei un problema sto creando un nuovo componente per joomla una specie di motore di ricerca ed ho riscontrato un problema effettuando una query al database spero che voi possiate aiutarmi.


Vi spiego ho creato 2 tabelle cosi:


TAB1
idtitlecity
1CasaMilano
2CasaRoma

TAB2
idid_tab1title
11Nuova
21Vecchia
31Bilocale
42Villa
52Villetta
62Monolocale

Con questa query:


Codice: [Seleziona]
<?php
$db 
JFactory::getDbo();       
$query $db->getQuery(true);
 
$query->select('*');
      
$query->from($db->quoteName('#__tab1') . ' AS a');
      
$query->join('LEFT'$db->quoteName('#__tab2') . ' AS b ON (' $db->quoteName('a.id') . ' = ' $db->quoteName('b.id_tab1') . ')');
           
$db->setQuery($query);       
$results $db->loadObjectList();
?>



quando carico la pagina il risultato è il seguente:


1. casa - milano - nuova
2. casa - milano - vecchia
3. casa - milano - bilocale
4. casa - roma - villa
5. casa - roma - villetta
6. casa - roma - monolocale


io vorrei invece ricevere questo risultato:


1. casa - milano - ( nuova, vecchia, bifocale )
2. casa - roma - ( villa, villetta, monolocale )


 
Come posso fare?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #1 il: 01 Gen 2017, 21:55:37 »
Sarà l'effetto dello spumante, ma non ci ho capito niente  ???

Offline Alex21

  • Appassionato
  • ***
  • Post: 645
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #2 il: 02 Gen 2017, 10:26:51 »
L' effetto dello spumante è passato ormai, quindi ... applichiamoci.  ;)
Invece di usare una query con join potresti fare con 2 query. Meno elegante, convengo. Comunque con la prima query selezioni id_title di TAB1 e poi con una seconda query raggruppi le righe di TAB2 che hanno lo stesso id_title.
Verrebbe più bello riuscendo a fare una query con dentro una subquery, ma bisogna riguardarsi bene la sintassi mysql e poi renderla con le API database di joomla.
Oppure una singola tabella, più complessa di TAB1 + TAB2, ma anche per questa occorrono delle prove.
Buon 2017, Ciao!

Offline ArroWeb

  • Nuovo arrivato
  • *
  • Post: 3
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #3 il: 02 Gen 2017, 10:47:49 »
 ;D  era buono lo spumante?  :P
Cmq ci avevo pensato pure io a fare due query, ma se poi i dati nel database aumentano ogni volta che faccio una ricerca, il serve riceve due chiamate e ci vuole più tempo prima che risponda, sarebbe preferibile tutto in una query.

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #4 il: 05 Gen 2017, 02:25:44 »
Allora forse hai bisogno di usare la funzione GROUP_CONCAT

Offline ArroWeb

  • Nuovo arrivato
  • *
  • Post: 3
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #5 il: 05 Gen 2017, 15:13:59 »
Allora forse hai bisogno di usare la funzione GROUP_CONCAT


Ci ho provato e mi restituisce un solo risultato

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:Join database con risultati multipli
« Risposta #6 il: 05 Gen 2017, 18:08:41 »
allora o lo usi male o ancora non ho capito la tua richiesta (evidentemente non era lo spumante il problema  :P )
Guardati questo esempio: http://stackoverflow.com/questions/4455958/mysql-group-concat-with-left-join

 



Web Design Bolzano Kreatif