Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [mysql] where in che non funziona

    ciao, ho critto questa query ma non funziona bene nel rigo WHERE cid IN (n.category)
    codice:
    SELECT n.category, (
        SELECT GROUP_CONCAT( DISTINCT `short` SEPARATOR ', ' )
        FROM `ods_category` 
        WHERE cid IN (n.category) 
        ORDER BY cid
    ) AS catstring
    FROM ods_news AS n
    cosi come è "catstring" ritorna solo il 1 valore anche quando n.category ha un valore come 1,2,5
    cmq la questi funziona bene se scritta cosi ma oviamente perde la sua dinamicità
    codice:
    SELECT n.category, (
        SELECT GROUP_CONCAT( DISTINCT `short` SEPARATOR ', ' )
        FROM `ods_category` 
        WHERE cid IN (1,2,5) 
        ORDER BY cid
    ) AS catstring
    FROM ods_news AS n
    sapreste dirmi dove sbaglio? o se la query va riscritta in qualke maniera?
    www.nintendopower.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    n.category non ha valore nella seconda query e quindi non viene valorizzato.
    where cid in (array di valore o una select che ti restituisce un set di valori)

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    l'osservazione precedente è corretta.

    Ti serve qualcosa tipo

    where ... AND (campo IN (Select qualcosa from tabella))

    Fai però attenzione: mysql non ha ottimizzatore subquery dipendente (c'è un misero abbozzo nella versione 5.6), questo tipo di query è tra le peggiori per mysql (=lentissime).

    Se proprio devi hai 2 1/2 possibilità:
    1- sostituisci mysql con mariadb >=5.3
    2- fai due query (lato applicazione), con la prima "select group_concat(qualcosa) from tabella"... e nella seconda metti "campo IN (elenco_tornato_dalla_prima_query)
    3- riscrivi la query usando join (se possibile)

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.