Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    [Zend] Problema nell'estrarre solo alcuni campi da una Join multipla

    Ciao a tutti,
    ho qualche problema per a costruire questa select con Zend.
    Dal link del manuale
    http://framework.zend.com/manual/en/zend.db.select.html
    e' chiaro come inserire le join, pero non mi e' chiaro come estrarre solo i campi che mi interessano ed inoltre come estralli "rinominati". Tra l'altro, vorrei evitare di estrarli tutti come indicato in questo esempio, sempre dal link ufficiale

    codice:
          $select = $db->select()
                       ->from(array('p' => 'products'),
                              array('product_id', 'product_name'))
                       ->join(array('l' => 'line_items'),
                              'p.product_id = l.product_id',
                              array() ); // empty list of columns
    La mia select e' questa.

    codice:
    select g.nombre_grupo as grupo,
           u.nombre as usuario,
           r.nombre as roles,
           m.nombre_modulo as modulo,
           p.descripcion as permiso
    FROM dp_permisos as p
    JOIN dp_modulos_permisos as mp ON p.cod_permiso=mp.cod_permiso
    JOIN dp_modulos as m ON m.cod_modulo=mp.cod_modulo
    JOIN dp_roles_permisos rp ON rp.cod_permiso=mp.cod_permiso
    JOIN dp_roles r ON r.cod_rol=rp.cod_rol
    JOIN dp_roles_grupos rg ON rg.cod_rol=r.cod_rol
    JOIN dp_grupos g ON g.cod_grupo=rg.cod_grupo
    JOIN dp_grupos_usuarios gu ON gu.cod_grupo=g.cod_grupo
    JOIN dp_usuarios u ON u.cod_usuario=gu.cod_usuario
    where u.cod_usuario='432'
    ORDER BY g.nombre_grupo,u.nombre,r.nombre,m.nombre_modulo,p.descripcion;
    dove cod_usuario e' chiaramente variabile.

    Sapete dirmi dove e come indicare l'estrazione solo dei 5 campi che mi interessano?

    Grazie

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da bstefano79
    http://framework.zend.com/manual/en/...statement.html
    Si, anche questo va bene, ma alla fine ho optato per le istruzioni che avevo indicato nel primo post di apertura.

    La select deve essere costruita in questo modo, dove nel caso delle "join" il terzo parametro, un array,
    se presente indica l'elenco dei campi da estrarre ed eventualmente rinominarli.
    Nel mio caso ho solo un campo da estrarre da ogni tabella, ma aggiungerne altri non e' un problema.
    L'unica cosa che non mi piace molto e' che nell'array mi ritrovo anche i valori di tutti i codici che vanno in join.
    Chiaramente non e' un problema, ma solo un dettaglio.

    Questa la select

    Codice PHP:
         $select $dbAdapter->select()
                       ->
    from(array('p' => 'dp_permisos'),
                              array(
    'permiso' => 'p.descripcion'))
                       ->
    join(array('mp' => 'dp_modulos_permisos'),
                              
    'p.cod_permiso = mp.cod_permiso')
                       ->
    join(array('m' => 'dp_modulos'),
                              
    'm.cod_modulo = mp.cod_modulo',
                               array(
    'modulo' => 'm.nombre_modulo'))
                       ->
    join(array('rp' => 'dp_roles_permisos'),
                              
    'rp.cod_permiso = mp.cod_permiso')
                       ->
    join(array('r' => 'dp_roles'),
                              
    'r.cod_rol = rp.cod_rol',
                               array(
    'roles' => 'r.nombre'))
                       ->
    join(array('rg' => 'dp_roles_grupos'),
                              
    'rg.cod_rol = r.cod_rol')
                       ->
    join(array('g' => 'dp_grupos'),
                              
    'g.cod_grupo = rg.cod_grupo',
                               array(
    'grupo' => 'g.nombre_grupo'))
                       ->
    join(array('gu' => 'dp_grupos_usuarios'),
                              
    'gu.cod_grupo = g.cod_grupo')
                       ->
    join(array('u' => 'dp_usuarios'),
                              
    'u.cod_usuario = gu.cod_usuario',
                               array(
    'usuario' => 'u.nombre'))
                   ->
    where('u.cod_usuario = ?'$id)
               ->
    order(array('g.nombre_grupo',
                                     
    'u.nombre',
                                     
    'r.nombre',
                                     
    'm.nombre_modulo',
                                     
    'p.descripcion')); 

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.