Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: sintassi query

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22

    sintassi query

    Salve a tutti, sono al mio primo messaggio e non so se ho sbagliato sezione.

    Vorrei porre una domanda su "simboli" che compaiono su una query che funziona egregiamente ma di cui io non comprendo alcune cose.
    La query è:

    $query = 'SELECT
    t.product_code, qty,
    name, description, price
    FROM
    ecomm_temp_cart t JOIN ecomm_products p ON
    t.product_code = p.product_code
    WHERE
    session = "' . $session . '"
    ORDER BY
    t.product_code ASC';

    mi è oscuro il significato di:
    1) la "t" di t.product_code (dopo il SELECT) sulla base del fatto che, sulla tabella ecomm_temp_cart esiste la colonna con nome "product_code" ed altre ecc.
    2) cosa sono quel "t" e "p" dopo il FROM .


    ringrazio in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Abbreviazioni dei nomi delle tabelle usate
    t per ecomm_temp_cart
    p per ecomm_products

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22
    Grazie per la risposta ma non ho capito cosa si intende per "Abbreviazioni dei nomi delle tabelle usate".

  4. #4
    Utente di HTML.it L'avatar di Laxus
    Registrato dal
    Oct 2010
    Messaggi
    251
    un alias

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Nella query trovi
    ecomm_temp_cart t
    che vuol dire: quando c'è t, interpretalo come se avessi scritto ecomm_temp_cart

    ecomm_products p
    che vuol dire: quando c'è p, interpretalo come se avessi scritto ecomm_products

    quindi scrivere
    t.product_code = p.product_code

    equivale a
    ecomm_temp_cart.product_code = ecomm_products.product_code

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22
    Ok grazie mille!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22

    Ulteriore condizione su query

    Salve, vorrei aiuto su seguente quesito:

    ho un db dove c'e un tabella di nome 'customer' con un campo che si chiama 'impiegato', ed ho la seguente query che mi stampa tutti gli ordini di tutti i clienti:

    $this->_select = '
    a.id_order AS id_pdf,
    CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
    osl.`name` AS `osname`,
    os.`color`,
    IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer) > 1, 0, 1) as new,
    (SELECT COUNT(od.`id_order`) FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = a.`id_order` GROUP BY `id_order`) AS product_number';
    $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
    LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (oh.`id_order` = a.`id_order`)
    LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`)
    LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)($cookie->id_lang).');

    $this->_where = 'AND oh.`id_order_history` = (SELECT MAX(`id_order_history`) FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = a.`id_order` GROUP BY moh.`id_order`)';

    Ho bisogno di stampare solo gli ordini relativi ad un particolare 'impiegato'; dove posiziono (l'ulteriore) condizione tipo " WHERE customer.impiegato = Rossi " ? (oppure con un " AND customer.impiegato = Rossi " ? )

    grazie in anticipo.

  8. #8
    E' uguale! Puoi mettere la condizione sia nelle clausole del join che nella where.
    Nelle condizioni del join diventa meno semplice da gestire quindi sarebbe meglio nella where.

    qundi:

    WHERE c.impiegato = "Rossi"

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22
    Intanto grazie per l'interesse. Scusandomi per la mia poca dimestichezza con la sintassi di php, mysql ecc vi chiedo precisamente dove mettere la condizione. Questo perchè ho già fatto diversi tentativi, ma senza risultato concreto, evidentemente sbaglio su qualche sintassi.... e/o posizione condizione.
    Se possiblile, mi potete "letteralmente" riscrivere la query con la condizione di cui oggetto ?
    grazie in anticipo.

  10. #10
    $this->_select = '
    a.id_order AS id_pdf,
    CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
    osl.`name` AS `osname`,
    os.`color`,
    IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer) > 1, 0, 1) as new,
    (SELECT COUNT(od.`id_order`) FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = a.`id_order` GROUP BY `id_order`) AS product_number';
    $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
    LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (oh.`id_order` = a.`id_order`)
    LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`)
    LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)($cookie->id_lang).');

    $this->_where = 'AND oh.`id_order_history` = (SELECT MAX(`id_order_history`) FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = a.`id_order`
    --------------------------
    AND c.customer = '$customer_name'

    --------------------------
    GROUP BY moh.`id_order`)';




    OVVIAMENTE: $customer_name contiene il nome del cliente

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