Domanda

Ho bisogno di ottenere un titolo dalla tabella 2, Tabella 2 ha il titolo e la colonna ID. La Tabella 1 ha alcuni dati e tre di queste colonne concatenate insieme Trucco L'ID che può essere trovato nella Tabella 1.

Ho usato la funzione Concat_ws () e ha dato questa colonna un nome di alias e ha bisogno di utilizzare l'alias per l'argomento On (almeno questo è ciò che ho capito che avevo bisogno di fare)

Pensavo che questo potrebbe essere un semplice resto a sinistra, ma non funziona per me.

Questa è la mia query

SELECT
    table_openers.mail,
    table_openers.f_name,
    table_openers.l_name,
    table_openers.Quality,
    CONCAT_WS('-',
            table_openers.esp,
            table_openers.acc,
            table_openers.group) as 't1aid',
    table_groups.aid,
    table_groups.group_name
FROM
    lance_mailstats.table_openers
        LEFT JOIN
    lance_mailstats.table_groups ON table_groups.aid = t1aid;
.

ottengo risultati per posta, f_name, l_name, qualità e t1aid, ma le colonne di aiuto e group_name della seconda tabella restituiscono NULL.

È stato utile?

Soluzione

Mi sento come se non puoi usare un alias nella clausola sulla clausola. Prova a fare

LEFT JOIN
    lance_mailstats.table_groups ON table_groups.aid = CONCAT_WS('-',
            table_openers.esp,
            table_openers.acc,
            table_openers.group);
.

"È possibile utilizzare l'alias in gruppo da, ordinare, o avere clausole per fare riferimento alla colonna" (da dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html).

E "Conditional_Expr utilizzato con ON è qualsiasi espressione condizionale del modulo che può essere utilizzata in una clausola dove" (da dev.mysql.com/doc/refman/5.1/en/join.html).

Così come un'inferenza logica non ti è permesso usare alias in clausole.

Altri suggerimenti

prova a usare una sottoquery .. Va come questo .........

ex.

Seleziona tbl1.mail, tbl1.f_name, tbl1.l_name, tbl1.quality, tbl1.t1aid, table_groups.aid, table_groups.group_name

    FROM

       (SELECT
              table_openers.mail,
              table_openers.f_name,
              table_openers.l_name,
              table_openers.Quality,
                CONCAT_WS('-',
                   table_openers.esp,
                   table_openers.acc,
                   table_openers.group) as 't1aid',
             FROM
             lance_mailstats.table_openers )tbl1

       LEFT JOIN
       lance_mailstats.table_groups ON table_groups.aid = tbl1.t1aid;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top