linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] dubbio sql

Rimon Soliman rimon.soliman a gmail.com
Lun 13 Giu 2016 12:03:30 UTC
Ciao, propongo la mia soluzione qualora tu non potessi levare 'taxonomy_':
potresti creare nella tua select di sito1_terms un campo calcolato
concatenando tipo ("taxonomi_" + `term_id`) as newField e usando newField
in join con sito1_options.option_name.
Se non ricordo male però dovrai fare una select di una select, ovvero:

SELECT * FROM (SELECT sito1_terms.*, CONCAT("taxonomy_", sito1_terms.term_id)
as newField ) AS newTable
JOIN sito1_terms
ON newTable.newField = sito1_options.option_name

(o qualcosa del genere, non ho controllato la correttezza sintattica)

Questo però potrebbe creare qualche problema di prestazioni se i dati sono
molto voluminosi.
Che ne pensate di questa opzione?

PS: Vorrei salutare tutti visto che sono iscritto da tempo ma questa è
praticamente la prima volta che scrivo.
Rimon.

Il giorno 13 giugno 2016 13:29, Teodoro Santoni <asbrasbra a gmail.com> ha
scritto:

> Ciao,
>
> Il 13/06/16, antonello<info a antonellofacchetti.it> ha scritto:
> > ho due tabelle:
> >
> > `sito1_terms` (`term_id`, `name`, `slug`, `term_group`)
> > con esempio:
> > (315, 'LA MECCANOGRAFICA SNC', 'la-meccanografica-snc', 0)
> >
> > e
> >
> > sito1_options` (`option_id`, `option_name`, `option_value`, `autoload`)
> > con il record:
> > 334222, 'taxonomy_315',
> > 'a:1:{s:19:"avcp_codice_fiscale";s:11:"00106290190";}', 'yes'),
> >
> > i due record sono collegati, come si vede l'id del primo fle (315) viene
> > usato per costruire il campo option_name (taxonomy_315)
> >
> > ora io dovrei fare un comando sql per estrarre i dati dalle due tabelle
> > collegandoli.
> >
> > la mia ipotesi sarebbe:
> > SELECT sito1_options.option_value, sito1_terms.name
> > FROM sito1_options, sito1_terms
> > JOINS
> >
> sito1_terms.term_id=trim(substring_index(sito1_options.option_name,'_',-1))
> > WHERE substring_index(sito1_options.option_name,'_',1)='taxonomy'
> >
> > ma l'errore che mi blocca è nel join...
> >
> > qualche suggerimento?
> >
> > Antonello
>
> Potresti scegliere due strade imho:
> 1)
> SELECT sito1_options.option_value, sito1_terms.name
> FROM sito1_options JOIN sito1_terms ON
> sito1_terms.term_id=trim(LEADING 'taxonomy_' FROM
> sito1_options.option_name)
> WHERE substring_index(sito1_options.option_name,'_',1)='taxonomy'
>
> 2) fare in modo che sia una vera fk levando quel 'taxonomy_' già
> quando inserisci il dato, ergo che venga storato solo l'id, in modo
> che invece di trimmare roba hai solo da comparare due numeri nel join.
>
> --
> Info/Lamentele/Segnalazioni: andrea.gelmini a gmail.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lugbs.linux.it/pipermail/lug/attachments/20160613/a1ba32f3/attachment.html>


Maggiori informazioni sulla lista Lug