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

    Left Join che non vede campo

    Sono di nuovo qui, questa volta ho un problema con una left join che non mi vede un campo, la query è la seguente

    SELECT an_news.*, an_utenti.username, an_utenti.id AS userid, rel_news_cat.codcat
    FROM an_news, rel_news_cat, an_utenti
    LEFT JOIN addfield_data
    ON addfield_data.codelement = rel_news_cat.codcat
    AND addfield_data.codlabel = 116
    WHERE an_news.erase = 0
    AND rel_news_cat.codnews = an_news.id
    AND an_utenti.id = an_news.codautore
    AND an_news.published = 1
    AND (addfield_data.valore = '0' OR addfield_data.valoreint = 0)
    AND an_news.codlingua = 1
    AND rel_news_cat.codcat != 9
    GROUP BY an_news.id
    ORDER BY an_news.datanews DESC, an_news.id DESC
    LIMIT 6

    e l'errore restituito è "Unknown column 'rel_news_cat.codcat' in 'on clause'"
    Com'è possibile che non veda codcat? Non riesco a spiegarmelo :-|

  2. #2

    Re: Left Join che non vede campo

    Originariamente inviato da darkmavis
    Sono di nuovo qui, questa volta ho un problema con una left join che non mi vede un campo, la query è la seguente

    SELECT an_news.*, an_utenti.username, an_utenti.id AS userid, rel_news_cat.codcat
    FROM an_news, rel_news_cat, an_utenti
    LEFT JOIN addfield_data
    ON addfield_data.codelement = rel_news_cat.codcat
    AND addfield_data.codlabel = 116
    WHERE an_news.erase = 0
    AND rel_news_cat.codnews = an_news.id
    AND an_utenti.id = an_news.codautore
    AND an_news.published = 1
    AND (addfield_data.valore = '0' OR addfield_data.valoreint = 0)
    AND an_news.codlingua = 1
    AND rel_news_cat.codcat != 9
    GROUP BY an_news.id
    ORDER BY an_news.datanews DESC, an_news.id DESC
    LIMIT 6

    e l'errore restituito è "Unknown column 'rel_news_cat.codcat' in 'on clause'"
    Com'è possibile che non veda codcat? Non riesco a spiegarmelo :-|
    Sinceramente non mi è mai capitato né di usare, né di vedere usato un prodotto cartesiano seguito da un left join e non so neanche se sia possibile. Comunque:

    FROM an_news, rel_news_cat, an_utenti
    LEFT JOIN addfield_data
    ON addfield_data.codelement = rel_news_cat.codcat
    AND addfield_data.codlabel = 116

    qui c'è sicuramente un errore. Innanzitutto la sintassi del join prevede:

    TAB_A LEFT JOIN TAB_B ON condizione che riguarda le 2 tabelle

    quindi al limite dovresti scrivere:

    rel_news_cat LEFT JOIN addfield_data

    poi AND ........... che vuol dire? Tale condizione va inserita nella WHERE

  3. #3
    Com'è possibile che non veda codcat? Non riesco a spiegarmelo :-|
    http://database.html.it/guide/lezion...so-delle-join/

    leggi al fondo.... "JOIN fra piu' tabelle"

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

  4. #4
    Dopo un po' di ricerche su internet ho scoperto che bastava mettere tra parentesi le tabelle nel FROM, e mi son ricordato che avevo risolto così pure qualche mese fa, solo che non mi ricordavo

    Alla fin della fiera la query corretta è
    codice:
    SELECT an_news.*, an_utenti.username, an_utenti.id AS userid, addfield_data.valore, addfield_data.valoreint
    FROM (an_news, rel_news_cat, an_utenti)
    LEFT JOIN addfield_data
    ON addfield_data.codelement = rel_news_cat.codcat
    AND addfield_data.codlabel = 116
    WHERE an_news.erase = 0
    AND rel_news_cat.codnews = an_news.id
    AND an_utenti.id = an_news.codautore
    AND an_news.published = 1
    AND (addfield_data.valore = '0' OR addfield_data.valoreint = 0)
    AND an_news.codlingua = 1
    AND rel_news_cat.codcat != 9
    GROUP BY an_news.id
    ORDER BY an_news.datanews DESC, an_news.id DESC
    LIMIT 6

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.