Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25

    query con condizioni multiple

    Ciao, mi servirebbe un aiuto per una query.
    Ho una tabella che contiene circa 1000 record così fatta:

    nome campi = id |idgruppo| tipo |testo

    contenuto = 01| 1001 |titolo |blablablabla
    contenuto = 02| 1001 |descr |blablablabla
    contenuto = 03| 1001 |img |http://miosito.it/images/miaimmagine01.jpg
    contenuto = 04| 1005 |titolo |blablablabla
    contenuto = 05| 1005 |descr |blablablabla
    contenuto = 06| 1005 |img |http://miosito.it/images/miaimmagine02.jpg
    contenuto = 07| 1015 |titolo |blablablabla
    contenuto = 08| 1015 |descr |blablablabla
    contenuto = 09| 1015 |img |http://miosito.it/images/miaimmagine03.jpg

    Ho la necessità di unire i record dello stesso gruppo (idgruppo) in una sola nuova tabella così fatta:

    id|titolo|descrizione|img

    Ho trovato molti esempi per copiare o trasferire un campo, ma nessuno con una clausa che indichi di unire in un unico record tutti quelli che hanno in comune lo stesso idgruppo spostando il contenuto nei campi che mi sono prefissato.

    Grazie in anticipo per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo. Non testato.

    codice:
    select A.id, A.idgruppo, A.testo, B.testo
     from tabella A
     inner join tabella B on A.id = B.id and A.idgruppo = B.idgruppo
     where A.tipo = 'titolo' and B.tipo = 'img'
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25
    ti ringrazio ma purtroppo non funziona.
    ma leggendo la query mi pare che qualcosa non quadra, vediamo provo a scrivere in italiano quello che vorrei fare:

    seleziona il contenuto dei campi id |idgruppo| tipo |testo della tabellaA
    e copia e unisci (quando il campo idgruppo è lo stesso identico) nella tabellaB il contenuto dei campi nome campi = id |idgruppo| tipo |testo
    nei campi
    id|titolo|descrizione|img

    Ho rinominato le mie tabelle tabellaA e tabella B

    quindi
    quando tabellaA.tipo è titolo va in tabellaB.titolo
    quando tabellaA.tipo è descr va in tabellaB.descrizione
    quando tabellaA.tipo è img va in tabellaB.img

    ma solo quando il numero dei 3 record della tabella/campo idgruppo è identico questi dati devono formare un nuovo unico record (unione dei 3 record)

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    La query funziona benissimo rispetto ai tuoi requisiti. Sono i tuoi dati che non vanno bene.

    Mi spiego. Vuoi l'id della tabella nel risultato ma gli id nella tua tabella sono tutti diversi.

    Quindi o hai una chiave univoca id/id_gruppo/tipo o hai una chiave id_gruppo/tipo. Nell'ultimo caso non puoi avere l'id nel risultato.

    Primo caso
    codice:
    select A.id, A.idgruppo, A.testo, B.testo, C.testo 
    from tab2 A 
    inner join tab2 B on A.id = B.id and A.idgruppo = B.idgruppo 
    inner join tab2 C on A.id = C.id and A.idgruppo = C.idgruppo 
    where A.tipo = 'titolo' and B.tipo = 'img' and C.tipo = 'desc'
    Secondo caso :
    codice:
    select A.idgruppo, A.testo, B.testo, C.testo from tab2 A 
    inner join tab2 B on A.idgruppo = B.idgruppo 
    inner join tab2 C on A.idgruppo = C.idgruppo 
    where A.tipo = 'titolo' and B.tipo = 'img' and C.tipo = 'desc'
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25
    Forse non mi sono spiegato oppure senza volere non ti ho dato tutta la spiegazione:

    L'id del record non deve combaciare, non è importante, mentre quel campo che si chiama idgruppo e che si poteva chiama anche "set" è quello che mi fa capire che i 3 dati in 3 record differenti faranno parte del futuro unico record unito, inoltre quel dato (campo) non mi serve nel nuovo record
    Ultima modifica di giusebos; 10-02-2017 a 13:39

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Allora prova la seconda query.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25
    ti ringrazio, più tardi provo e ti faccio sapere

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25
    Sabato ho provato e niente, mi produce una serie di record identici copia di quelli gi� esistenti.
    Forse non � la strada giusta quella che pensavo di percorrere, magari devo fare pi� passaggi per semplificare

    ora visto i iei record della tabellaA

    nome campi = id |idgruppo| tipo |testo

    contenuto = 01| 1001 |titolo |blablablabla
    contenuto = 02| 1001 |descr |blablablabla
    contenuto = 03| 1001 |img |http://miosito.it/images/miaimmagine01.jpg
    contenuto = 04| 1005 |titolo |blablablabla
    contenuto = 05| 1005 |descr |blablablabla
    contenuto = 06| 1005 |img |http://miosito.it/images/miaimmagine02.jpg
    contenuto = 07| 1015 |titolo |blablablabla
    contenuto = 08| 1015 |descr |blablablabla
    contenuto = 09| 1015 |img |http://miosito.it/images/miaimmagine03.jpg



    proviamo a percorrere un altra strada, visto che per ogni set di record ho un campo tipo con contenuto diverso per i 3 record ma ripetitivo per tutti (titolo, descr e img), e che inoltre ho un campo che ne identifica con un numero l'appartenenza al set (campo idgruppo) questi potrebbero essere usati cos�:


    assumiamo che la nuova tabella (tabellaB) sia con i sottostanti campi

    id|titolo|descrizione|img

    id = non ha importanza in quanto sar� un numero progressivo di record

    titolo = dovranno andarci a finire i contenuti del campo testo (tabellaA), per� solo quelli che nel record contengono titolo nel campo tipo quando in comune hanno il contenuto del campo idgruppo della tabellaA

    descrizione = dovranno andarci a finire i contenuti del campo testo (tabellaA), per� solo quelli che nel record contengono descr nel campo tipo quando in comune hanno il contenuto del campo idgruppo della tabellaA

    img = dovranno andarci a finire i contenuti del campo testo (tabellaA), per� solo quelli che nel record contengono img nel campo tipo quando in comune hanno il contenuto del campo idgruppo della tabellaA

    forse 3 query distinte potrebbero risolvere?

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Con la query che segue.


    codice:
    select A.idgruppo, A.testo, B.testo, C.testo from tab2 A 
    inner join tab2 B on A.idgruppo = B.idgruppo 
    inner join tab2 C on A.idgruppo = C.idgruppo 
    where A.tipo = 'titolo' and B.tipo = 'img' and C.tipo = 'desc'


    Con i dati che assomigliano ai tuoi

    29 1001 titolo blablabla1
    21 1001 desc bloblo1
    12 1001 img img1
    20 1005 titolo blabla2
    22 1005 desc bloblo2
    23 1005 img img2
    30 1015 titolo blabla3
    31 1015 desc bloblo3
    32 1015 img img3


    ottengo

    idgruppo testo testo testo
    1001 blablabla1 img1 bloblo1
    1005 blabla2 img2 bloblo2
    1015 blabla3 img3 bloblo3
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    25
    Il risultato che desidero è quasi proprio ciò che ottieni, anche se i campi testo, testo e testo dovrebbero essere titolo, img e descrizione.

    Ho cambiato il nome della tabella che tu hai chiamato tab2 mentre la mia si chiama tabellaA.

    Il risultato che ottengo è una tabella provvisoria, come posso fare per memorizzare la tabella con un nome?

    Questa query mi serve per modificare un vecchio database, quindi ciò che ottengo dopo la query mi occorrebbe in modo definitivo.
    La vecchia tabelle (tabellaA) non mi servirà più.

    quindi per adesso davvero grazie!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.