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

    Errore di Sintassi...clausola AS

    Salve, chiedo scusa ma non riesco a capire qual è l'errore di questa query:

    SELECT *
    FROM (

    promozioni_per_data
    LEFT JOIN promozioni_m_x_n ON promozioni_per_data.codice_ean = promozioni_m_x_n.codice_ean
    ) AS T1
    WHERE T1.codice_ean > '0'

    Messaggio di MySQL:

    #1064 - Errore di sintassi nella query SQL vicino a 'AS T1 where T1.codice_ean>'0' LIMIT 0, 30' linea 1

    L'errore sembra essere figliod della clausola AS

  2. #2
    sbagli ad usare l'alias in quel punto.... alias di chi?

    codice:
    SELECT *
    FROM (
    promozioni_per_data as T1
    LEFT JOIN promozioni_m_x_n as T2 ON T1.codice_ean = T2.codice_ean
    ) 
    WHERE T1.codice_ean > '0'

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

  3. #3
    Il problema è che il DB non è normalizzato, il mio scopo era dare un nome alla tabella venuta fuori dalla SELECT

    Stavo quindi sperimentando un pò di istruzioni, dato che devo ottenere questa query:

    Parto da 2 tabelle:

    promozioni_per_data
    promozioni_m_x_n

    entrambe con le colonne:

    "codice_ean", "nome_promozione"

    devo selezionare queste colonne, e ottenere una sola tabella che sia l'unione delle righe.

    Ora, riesco a fare:

    (SELECT codice_ean, nome_promozione FROM promozioni_per_data)UNION(SELECT codice_ean, nome_promozione FROM promozioni_m_x_n)
    ed ho la mia bella tabella con 2 colonne "codice_ean", "nome_promozione" e tutto va bene.

    Diciamo che la tabella che ottengo con UNION la chiamo per convenzione "tab_unita" Partendo da qui, devo poi fare una JOIN:

    SELECT * FROM prodotti JOIN tab_unita ON prodotti.codice_ean=tab_unita.codice_ean

    Visto che :

    tabella_unita= SELECT codice_ean, nome_promozione FROM promozioni_per_data)UNION(SELECT codice_ean, nome_promozione FROM promozioni_m_x_n)



    La query finale dovrebbe essere qualcosa del tipo:

    SELECT * FROM prodotti JOIN (SELECT codice_ean, nome_promozione FROM promozioni_per_data)UNION(SELECT codice_ean, nome_promozione FROM promozioni_m_x_n)) ON prodotti.codice_ean=tab_unita.codice_ean
    Ora, non so come scrivere la parte in grassetto, ovvero tab_unita.codice_ean, visto che la tabella venuta fuori dalla UNION non ha un nome...

  4. #4
    non sono sicuro di aver capito bene. La tabella con UNION deve essere una tabella temporanea oppure una tabella reale?

    comunque sia ... faccio tutto il discorso per vedere se ho capito la cosa.

    se vuoi puoi fare una tabella reale dalla union oppure una tabella temporanea:

    codice:
    create table tab_unita
    (SELECT codice_ean, nome_promozione FROM promozioni_per_data)
    union
    (SELECT codice_ean, nome_promozione FROM promozioni_m_x_n)
    a questo punto hai una tabella reale che si chiama "tab_unita" formata da due campi codice_ean e nome_promozioni, senza indice e senza id

    ora devi "JOINARE" la tabella tab_unita con prodotti tramite il campo codice_ean:

    codice:
    SELECT * 
    FROM prodotti 
    JOIN tab_unita ON prodotti.codice_ean = tab_unita.codice_ean
    quindi tutto qui se ho capito il giro della muffa.

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

  5. #5
    No, non devo creare nessuna tabella reale, altrimenti non mi rovinavo il fegato a fare una query lunga 3 giorni, non trovi?
    Devo solo fare una query:

    Passo 1:

    unione colonne (codice_ean, nome_promozione) ricavata dalle tabelle:

    promozioni_per_data
    promozioni_m_x_n

    Passo 2:

    il risultato di questa unione, serve per fare una JOIN con la tabella prodotti sul campo

    "codice_ean" della tabella prodotti, e "codice_ean" ottenuto dal risultato dell'unione promozioni_per_data, promozioni_m_x_n.


    Certamente sono io che non sono bravo ad esprimermi, ma più semplice di così davvero non riesco. Mi auguro di essere stato chiaro stavolta.

    Grazie

  6. #6
    Originariamente inviato da controvento07
    No, non devo creare nessuna tabella reale, altrimenti non mi rovinavo il fegato a fare una query lunga 3 giorni, non trovi?
    Devo solo fare una query:
    E allora fai una tabella temporanea.... buona solo per la tua query che andra' a seguire.

    codice:
    create temporary table tab_unita
    (SELECT codice_ean, nome_promozione FROM promozioni_per_data)
    union
    (SELECT codice_ean, nome_promozione FROM promozioni_m_x_n)

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

  7. #7
    Proverò così, grazie per i suggerimenti

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.