Visualizzazione risultati 1 fino 4 di 4

Discussione: REGEXP_REPLACE e conteggio nella query

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito REGEXP_REPLACE e conteggio nella query

    Salve a tutti, buone feste

    questo quesito dovrebbe essere semplice ma non riesco ad uscirne

    praticamente dovrei rimuovere -???? da movies.year

    2010 dovrebbe risultare nel conteggio 2 volte



    Codice:
    SELECT DISTINCT
      
    	REGEXP_REPLACE(movies."year",'(-|\?)','') as anno,
    	COUNT ( movies."year" ) AS conteggio 
    FROM
    	actors
    	INNER JOIN movies2actors ON actors.actorid = movies2actors.actorid
    	INNER JOIN movies ON movies2actors.movieid = movies.movieid 
    WHERE
    	actors.actorid = 3517953 
    GROUP BY
    	anno

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,259

    Predefinito

    Forse ti conviene usare LEFT in questo caso? Vedi https://dev.mysql.com/doc/refman/8.0...#function_left

    Se leggo bene, COUNT(*) ti darebbe tutte le righe nel gruppo, invece di COUNT(movies.`year`).

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao dreadnaut,

    LEFT non risolve il problema, INNER JOIN va bene,

    COUNT ( movies.year ) e integrato nel checkbox insieme a quello per filtrare
    come si puo' notare dallo screen e' presente un 2010 e un 2010-???? (che non filtra)

    quindi si dovrebbe eliminare il superfluo e avere un 2010 con 2 conteggi, ho provato molte opzioni ma senza risultato

    si potrebbe ovviare al problema sistemando il dato nel database ma risolverebbe questo e non gli altri, ce ne sono molti nel database cosi


  4. #4
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    risolto

    REGEXP_REPLACE here:, Note that in either case we pass g as the fourtb parameter to REGEXP_REPLACE to do a global replacement of all pipe separated numbers.
    quindi aggiungiamo

    Codice:
    REGEXP_REPLACE(movies.year,'(-|\?)','', 'g') as anno,
    e raggruppiamo per anno

    Codice:
    GROUP BY anno
    Codice:
    SELECT DISTINCT
       REGEXP_REPLACE(movies.year,'(-|\?)','', 'g') as anno,
    	COUNT ( movies.year ) AS conteggio 
    FROM
    	actors
    	LEFT JOIN movies2actors ON actors.actorid = movies2actors.actorid
    	LEFT JOIN movies ON movies2actors.movieid = movies.movieid 
    WHERE
    	actors.actorid = $actor_id 
    GROUP BY
    	anno
    	";
    risultato finale




    Buon Anno a tutti

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •