Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di suxt
    Registrato dal
    May 2001
    Messaggi
    97

    Query con sub-query in MySQL

    Ciao ragazzi,

    sto provando a fare una query un attimino complessa, ma non so neanche se è possibile. Ora ve la mostro:

    INSERT INTO core_track_ruolo_years (id_user, id_period, ruolo, def_year) VALUES ('
    (SELECT gm.idstMember
    FROM core_group_members gm
    JOIN core_group g on g.idst = gm.idst
    JOIN core_user cu ON cu.idst = gm.idstMember
    where g.groupid = CONCAT('/oc_',(SELECT id_dir from core_org_chart WHERE translation='Addetti')) AND cu.valid > 0
    )
    ','41','addetto','2014');

    In pratica è in INSERT ma prima di effettuarlo deve andare a prendersi una serie di dati in altre colonne. Questa non funziona, si blocca al CONCAT. Qualcuno di voi ha idea del perchè? Magari è una sciocchezza...
    www.comxcase.com

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    se il problema è concat...senza che posti l'insert....ragioniamo solo sulla select:


    codice:
    SELECT gm.idstMember
    FROM core_group_members gm
    JOIN core_group g on g.idst = gm.idst
    JOIN core_user cu ON cu.idst = gm.idstMember
    where g.groupid = CONCAT('/oc_',(SELECT id_dir from core_org_chart WHERE translation='Addetti')) AND cu.valid > 0
    che tipo di field è g.groupid ?...è un campo stringa?

  3. #3
    Utente di HTML.it L'avatar di suxt
    Registrato dal
    May 2001
    Messaggi
    97
    Si è una stringa, e il suo contenuto è sempre tipo /oc_45 dove /oc_ è il tipo di utente e 45 in questo caso è un id preso dalla tabella core_org_chart. La query, se metto /oc_45 al posto di CONCAT('/oc_',(SELECT id_dir from core_org_chart WHERE translation='Addetti')) funziona correttamente.
    www.comxcase.com

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Quote Originariamente inviata da suxt Visualizza il messaggio
    Si è una stringa, e il suo contenuto è sempre tipo /oc_45 dove /oc_ è il tipo di utente e 45 in questo caso è un id preso dalla tabella core_org_chart. La query, se metto /oc_45 al posto di CONCAT('/oc_',(SELECT id_dir from core_org_chart WHERE translation='Addetti')) funziona correttamente.
    allora io controllerei


    codice:
     SELECT id_dir from core_org_chart WHERE translation='Addetti'
    probabilmente ti restituisce un valore intger e tu dovresti convertirlo in stringa.

    cosa succede se, la stessa select restituisce NULL ?

  5. #5
    Utente di HTML.it L'avatar di suxt
    Registrato dal
    May 2001
    Messaggi
    97
    Non può restituire NULL. E' impossibile.
    ID_DIR è un intero. Pensavo che però, concatenandolo ad una stringa, diventasse stringa, non che mi desse problemi... Cosa consigli?
    www.comxcase.com

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    prova a fare cosi: ....Cast(INTEGER as char)


    codice:
    SELECT gm.idstMember
    FROM core_group_members gm
    JOIN core_group g on g.idst = gm.idst
    JOIN core_user cu ON cu.idst = gm.idstMember
    where g.groupid = CONCAT('/oc_', cast((SELECT id_dir from core_org_chart WHERE translation='Addetti')) AND cu.valid as char) > 0

  7. #7
    Utente di HTML.it L'avatar di suxt
    Registrato dal
    May 2001
    Messaggi
    97
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id_dir from core_org_chart WHERE translation='Addetti') AND cu.valid as c' at line 5
    www.comxcase.com

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    SELECT
    core_org_chart.id_dir,
    CONCAT('/oc_', cast(core_org_chart.id_dir AS CHAR)) CONCATENATO
    from core_org_chart
    WHERE translation='Addetti'

    questo che ti fa?

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.