Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Query per estrarre numero di righe che contengono X parole

    Ciao,
    ho una tabella Table_A fatta così
    int id
    text content

    Da questa tabella vorrei poter estrarre il numero di righe che contengono X parole

    Ad esempio.
    id content
    1 ciao
    2 questa è una prova
    3 test
    4 prova
    5 altro test
    6 prova due


    Vorrei ottenere
    codice:
    N°parole	N°righe
    1		3
    2		2
    4		1

    Facendo
    SELECT SUM( LENGTH(content) - LENGTH(REPLACE(content, ' ', ''))+1) FROM Table_A group By id
    ottengo il numero di parole per ogni riga, ma da qui non riesce ad andare avanti.
    Mi potete aiutare?

  2. #2

    Re: Query per estrarre numero di righe che contengono X parole

    Originariamente inviato da Chiara3.0
    Ciao,
    ho una tabella Table_A fatta così
    int id
    text content

    Da questa tabella vorrei poter estrarre il numero di righe che contengono X parole

    Ad esempio.
    id content
    1 ciao
    2 questa è una prova
    3 test
    4 prova
    5 altro test
    6 prova due


    Vorrei ottenere
    codice:
    N°parole	N°righe
    1		3
    2		2
    4		1

    Facendo
    SELECT SUM( LENGTH(content) - LENGTH(REPLACE(content, ' ', ''))+1) FROM Table_A group By id
    ottengo il numero di parole per ogni riga, ma da qui non riesce ad andare avanti.
    Mi potete aiutare?
    supponiamo tu voglia il numero di righe che hanno 3 parole :
    SELECT COUNT(ID)
    FROM Table_A
    WHERE 3 = SELECT SUM( LENGTH(content) - LENGTH(REPLACE(content, ' ', ''))+1) FROM Table_A
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    come l'hai scritta te genera errore, ma a prescindere da questo a me servirebbe qualcosa (per mysql) che riesca a estrapolare tutto in automatico e che non sia io a mettere la condizione X=3.
    Cioè devo ottenere il risultato per X=3, X=4, X=5, X=N in automatico, senza che io immetta nulla.

  4. #4
    Originariamente inviato da Chiara3.0
    come l'hai scritta te genera errore, ma a prescindere da questo a me servirebbe qualcosa (per mysql) che riesca a estrapolare tutto in automatico e che non sia io a mettere la condizione X=3.
    Cioè devo ottenere il risultato per X=3, X=4, X=5, X=N in automatico, senza che io immetta nulla.
    probabilmente per risolvere l'errore basta usare l'alias :

    SELECT COUNT(t1.ID)
    FROM Table_A as t1
    WHERE 3 = (SELECT SUM( LENGTH(t2.content) - LENGTH(REPLACE(t2.content, ' ', ''))+1) FROM Table_A as t2)

    per fare il tutto in automatico o scrivi una procedura

    o lo fai da programma ad esempio java
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    l'errore si risolve però il risultato è sempre sbagliato perché così viene fatta la somma totale del numero di parole di tutte le righe.

    Per capirci, se applico all'esempio di prima
    SELECT SUM( LENGTH(t2.content) - LENGTH(REPLACE(t2.content, ' ', ''))+1) FROM Table_A as t2
    viene restituito 11

    e quindi per ottenere un risultato diverso da 0, dovrei mettere X=11 per ottenere il numero di righe totali cioè 6.


    Se metto X=11 dovrebbe uscire 0
    Se metto X=2 dovrebbe uscire 2

  6. #6
    Originariamente inviato da Chiara3.0
    l'errore si risolve però il risultato è sempre sbagliato perché così viene fatta la somma totale del numero di parole di tutte le righe.

    Per capirci, se applico all'esempio di prima
    SELECT SUM( LENGTH(t2.content) - LENGTH(REPLACE(t2.content, ' ', ''))+1) FROM Table_A as t2
    viene restituito 11

    e quindi per ottenere un risultato diverso da 0, dovrei mettere X=11 per ottenere il numero di righe totali cioè 6.


    Se metto X=11 dovrebbe uscire 0
    Se metto X=2 dovrebbe uscire 2
    La subquery usata e' la tua dove tu dici : "ottengo il numero di parole per ogni riga, ma da qui non riesce ad andare avanti."

    la query principale conta quante righe soddisfano la condizione di 3 = alla tua subquery

    quindi dove 3 = numero di parole per riga.

    se la query non funge rivediti la sottoquery che hai scritto
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    la mia subquery aveva un group by per farla andare... e non può essere riaggiunto con la modifica che hai proposto.

  8. #8
    Originariamente inviato da Chiara3.0
    la subquery aveva un group by per farla andare... e non può essere riaggiunta con la modifica che hai proposto.
    me l'ero perso

    perche' dici che non puo essere aggiunto?

    aggiungilo :

    SELECT COUNT(t1.ID)
    FROM Table_A as t1
    WHERE 3 = (SELECT SUM( LENGTH(t2.content) - LENGTH(REPLACE(t2.content, ' ', ''))+1) FROM Table_A as t2
    group By t2.id
    )
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  9. #9
    perché mi da questo: Subquery returns more than 1 row

  10. #10
    Originariamente inviato da Chiara3.0
    perché mi da questo: Subquery returns more than 1 row
    giustamente

    allora la tua query non puo essere usata (in questo modo)
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

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 © 2026 vBulletin Solutions, Inc. All rights reserved.