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

    [mysql] collaborazione migrazione da "solo mysql4" a "entrambi mysql 4 e 5"

    se qualche anima pia volesse gentilmente
    aiutarmi nella correzione delle query .... ne sarei infinitivamente grato.

    sto' creando un progetto (oramai da un annetto abbondante) per un e-commerce
    WAI con licenga GPL2, pero' per quanto riguarda le conoscenze mysql...
    faccio un po' pena.

    ho il codice funzionante su mysql 4, ma non se ne parla di farlo andare su
    mysql 5.

    // versione che naturalmente va solo per mysql4, PERCHE ' ?

    $listing_sql = "select " . $select_column_list . " p.products_id,
    p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status,
    s.specials_new_products_price, NULL) as specials_new_products_price,
    IF(s.status, s.specials_new_products_price, p.products_price) as final_price

    from " . TABLE_PRODUCTS ." p

    left join " . TABLE_SPECIALS . " s on (p.products_id = s.products_id)

    <--- AGGIUNTA --->
    left join " . TABLE_CATEGORIES . " c on (p2c.categories_id = c.categories_id),
    <--- fine aggiunta --->

    " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " .
    TABLE_PRODUCTS_TO_CATEGORIES . " p2c

    where

    <--- aggiunta --->
    c.categories_status = '1' and p.products_status = '1'
    and
    <--- fine aggiunta --->

    p.manufacturers_id = m.manufacturers_id
    and
    m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'
    and
    p.products_id = p2c.products_id
    and
    pd.products_id = p2c.products_id
    and
    pd.language_id = '" . (int)$languages_id . "'
    and
    p2c.categories_id = '" . (int)$_GET['filter_id'] . "'";

    il problema sta' nel secondo left join, se tolgo le aggiunte funziona tutto su entrambi i mysql.... ma mi serve anche l'aggiunta.
    aiutino please...

  2. #2
    togli le apici ai valori numerici...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    apici o no, il problema sta' ancora nel JOIN (fino a che non risolvo quello non so se gli apici ci vanno oppure no ) :

    left join " . TABLE_SPECIALS . " s on (p.products_id = s.products_id)

    <--- AGGIUNTA --->
    left join " . TABLE_CATEGORIES . " c on (p2c.categories_id = c.categories_id),
    <--- fine aggiunta --->

    se ne metto uno solo va, se li metto entrambi non va piu'.

    so che con mysql 5 hanno "creato regole sintattiche" piu' sicure e chiare.....
    ma per me erano un tabu' anche prima.

    errore visualizzato classico 1054 :
    unknown column 'p2c.categories_id' in 'on clause'

  4. #4
    utilizzi l'alias di tabella p2c prima di dichiararlo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    bave alla grande.......



    cosa intendi ?
    utilizzi l'alias di tabella p2c prima di dichiararlo.

    per me p2c va messo perche mi hanno detto di metterlo
    il codice non l'ho scritto io, l'ho copiato da chi l'ha fatto
    io so solo phe con mysql4 va e con il 5 no VVoVe:

  6. #6
    risolto :


    $listing_sql = "select " . $select_column_list . " p.products_id,
    p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status,
    s.specials_new_products_price, NULL) as specials_new_products_price,
    IF(s.status, s.specials_new_products_price, p.products_price) as final_price

    from (" . TABLE_PRODUCTS ." p
    left join " . TABLE_SPECIALS . " s on (p.products_id = s.products_id) ,
    " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " .
    TABLE_PRODUCTS_TO_CATEGORIES . " p2c )
    left join " . TABLE_CATEGORIES . " c on (p2c.categories_id = c.categories_id)

    where
    c.categories_status = '1' and p.products_status = '1'
    and
    p.manufacturers_id = m.manufacturers_id
    and
    m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'
    and
    p.products_id = p2c.products_id
    and
    pd.products_id = p2c.products_id
    and
    pd.language_id = '" . (int)$languages_id . "'
    and
    p2c.categories_id = '" . (int)$_GET['filter_id'] . "'";

    ora funziona... ma non ho idea del perche' ...... qualcuno conosce qualche video-corso "per principianti" su mysql 5 ?
    libri ne ho gia' 3, ma non riesco mai a leggere piu' di un tot di pagine, invece se fossere video, li guarderei mentre ceno.

  7. #7
    Originariamente inviato da maury2ma
    ora funziona... ma non ho idea del perche' ......
    perche hai messo la chiamata a quell'alias di tabella "p2c" DOPO averlo dichiarato e non prima come facevi. L'errore pero' esisteva anche nella versione 4 di mysql, miracoli esclusi.



    Potresti leggere la guida di html.it http://database.html.it/guide/leggi/87/guida-mysql/

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.