Difficile estrazione dati da tabella

di il
3 risposte

Difficile estrazione dati da tabella

Ciao a tutti
Ho iniziato a lavorare con il PHP in questi giorni e sono un super pivello e per questo vi chiedo scusa.
Ho un problema datomi da una ditta ed è quello di estrarre da una tabella con tre campi:

Provincia | Stradale | Cap |

Con ad esempio questi campi (tabella1)

AOSTA 0 11100
AOSTA I 11010
AOSTA I 11010
AOSTA I 11013
AOSTA I 11019
AOSTA II 11020
AOSTA II 11020
AOSTA II 11020
AOSTA II 11020
AOSTA II 11023
AOSTA II 11023
AOSTA II 11024
AOSTA II 11024
AOSTA II 11024
AOSTA II 11024
AOSTA II 11025
AOSTA II 11026
AOSTA II 11026
AREZZO II 52020
AREZZO II 52026
AREZZO II 52027
AREZZO II 52027
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52031
AREZZO III 52032
AREZZO III 52032
AREZZO III 52032
AREZZO III 52032

Il mio problema è che devo avere come risultato una tabella del genere

tabella2

Provincia | Stradale | Cap_contenuti

Aosta I 11010 - 11013 - 11019
Aosta II 11020 - 11023 - 11024 - 11025 - 11026
Arezzo II 52020 - 52026 - 52027
Arezzo III 52031 - 52032
Arezzo III 52032 ' seconda riga essendo maggiore di 20

In pratica devo leggere dalla tabella1 i record e ogni 20 (quantità da inserire con una variabile) devo indicare nella tabella2 un record che contenga la provincia, lo stradale e i cap contenuti ma senza duplicati. Chiaramente ogni volta che cambia lo stradale o la provincia bisogna iniziare un nuovo gruppo di 20 o meno se cambiasse ancora provincia o cap.

Vi prego di aiutarmi perchè se riesco a risolvere questo problema è probabile che possa avere un lavoro da questa ditta e per chi è come me agli inizi è molto importante.

Vi prometto che studierò a fondo il php ma ora ho proprio bisogno di un aiuto !!

Grazie in anticipo del vostro aiuto e spero un giorno di poterlo dare anchio.

Enrico

3 Risposte

  • Re: Difficile estrazione dati da tabella

    Io solverei questo problema in due passi, o tre (con array).

    Prima leggere tutto e mettere in un database (preferito) oppure un array.

    Poi cercare i duplicati e azzerare il contenuto dell'array o cancellare i record duplicati.

    Successivamente ricopiare l'array in modo che contiene solo gli elementi validi.

    Il terzo passo può essere evitato se la funzione di lettura salta tutti gli elementi nulli. Per il database non è necessario in quanto rimangono solo i record validi.

    Nota:
    Quando si tratta di grandi quantità di dati, conviene fare tabelle separate per il contenuto, ad esempio:

    id luogo
    1 Arezzo
    2 Firenze
    ...

    id gruppo
    1 I
    2 II
    3 III
    ...

    id CAP
    1 10001
    2 20002
    ...

    In questo modo hai tre tabelline che contengono una quantità di dati molto ridotta.

    Poi crei una quarta tabella, dove associ i vari ID, ad esempio:

    id idluogo idgruppo idcap
    1 1 1 1
    2 1 1 2
    3 1 2 4
    ...

    In questo modo hai sì un po' più lavoro nella creazione, ma anche il grande vantaggio di avere solo un numero ridotto di dati e un database molto veloce. Questo è particolarmente importante per le applicazioni web su server non dedicati. Inoltre non bisogna strafare con gli indici di ricerca, e nel complessivo è quello che si fa un po' ovunque.

    Per mostrare poi i dati, usi la SELECT con INNER JOIN. Per comprendere bene il funzionamento di tabelle correlate, consiglio usare Access con un semplice database creato allo scopo, inserire qualche dato e provare...

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Difficile estrazione dati da tabella

    Per il problema dei gruppi a 20, non c'è altra strada che poi selezionare tutti i record della 4a tabella con 'group by' per idluogo e idgruppo, ordinati per idcap, ed estrapolare i gruppetti tramite una funzione con contatore. Con qualche alchemia si riesce a fare ciò anche con le query, ma comunque c'è bisogno di una funzione che legge gli id di tutti i record dell'insieme, e poi dividerli, inserendo nella SELECT:

    SELECT * FROM TABLE WHERE id <b>IN (1, 2, 3, 4, ..., 20)</b>



    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Difficile estrazione dati da tabella

    Grazie ragazzi

    Ora provo a buttare giu qualcosa e sicuramente ve la proporrò perchè sarà piena di errori.
    Comunque ora ho una base da cui iniziare.

    Grazie
    Enrico
Devi accedere o registrarti per scrivere nel forum
3 risposte