Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    problema con query complessa (DISTINCT e LEFT)

    Codice PHP:
    SELECT DISTINCT cityLEFT(city4FROM products
    WHERE city REGEXP 
    '^(milano|roma|barcellona)[0-9]+'
    ho diverse voci nel db, tipo milano1, milano14, barcellona2, in generale name+N

    ora, usando Left ottegno le prime 4 cifre, ma mi va bene per roma, ma non per milano (mila) e barcellona (barc).

    Esiste una maniera generica per ragruppare?.. il problema è la lunghezza..
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2

    Re: problema con query complessa

    Originariamente inviato da blekm
    Codice PHP:
    SELECT DISTINCT cityLEFT(city4FROM products
    WHERE city REGEXP 
    '^(milano|roma|barcellona)[0-9]+'
    ho diverse voci nel db, tipo milano1, milano14, barcellona2, in generale name+N

    ora, usando Left ottegno le prime 4 cifre, ma mi va bene per roma, ma non per milano (mila) e barcellona (barc).

    Esiste una maniera generica per ragruppare?.. il problema è la lunghezza..
    Cosa ha che non va quella che hai scritto? (Non so se esiste la f.ne REGEXP in mysql)

  3. #3
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    quella query funziona, solo che io ho bisogno di raggruppare per CITY.

    Roma
    Barcellona
    Milano

    usando LEFT sono obbligato a inserire una lunghezza (4), ma io vorrei trovare una maniera per non essere obbligato a inserire la lunghezza, ma usare di volta in volta la lunghezza della stringa sotto regexp..

    se non mi sono spiegato, dimmelo, che riprovo a farti un esempio pratico
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  4. #4
    Non è così facile. Potresti utilizzare la funzione "LOCATE" per trovare la prima occorrenza di un numero, ma non credo sia utilizzabile per tutti i numeri contemporaneamente (non si può utilizzare con una regexp in pratica).
    Altrimenti potevi fare qualcosa del tipo:
    codice:
    SELECT DISTINCT city, LEFT(city, LOCATE(city, '1')) FROM products
    WHERE city REGEXP '^(milano|roma|barcellona)[0-9]+';

  5. #5
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da kylnas1
    Non è così facile. Potresti utilizzare la funzione "LOCATE" per trovare la prima occorrenza di un numero, ma non credo sia utilizzabile per tutti i numeri contemporaneamente (non si può utilizzare con una regexp in pratica).
    Altrimenti potevi fare qualcosa del tipo:
    codice:
    SELECT DISTINCT city, LEFT(city, LOCATE(city, '1')) FROM products
    WHERE city REGEXP '^(milano|roma|barcellona)[0-9]+';
    cosi non ottengo nessun risultato
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  6. #6
    No però il principio ti potrebbe far risolvere il problema.

  7. #7
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da kylnas1
    No però il principio ti potrebbe far risolvere il problema.
    sto provando qualche soluzione con locate, ma non sono arrivato a nulla finora...

    se qualcuno ha qualche lampo di genio
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  8. #8
    Originariamente inviato da blekm
    sto provando qualche soluzione con locate, ma non sono arrivato a nulla finora...

    se qualcuno ha qualche lampo di genio
    Il problema è che forse non è possibile farlo con una query. Prova con qualche subquery. Il principio è di effettuare la select per prelevare con una regexp il testo prima dei numeri.

  9. #9
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    capito, il fatto era che volevo riuscire a fare tutto con una query, ma ciò non è possibile..

    forse risolverò aggiungendo un altro campo dentro un'altra tabella, vedrò

    grazie per l'aiuto.
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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.