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

    eseguire una query su due tabelle simili

    ciao a tutti,

    ho due tabelle abbastanza simili che per ragioni tecniche devono essere separate tra loro.
    le tabelle hanno molti campi uguali, nominati allo stesso modo.

    ho bisogno però di fare una selezione che cerchi in entrambe le tabelle quei campi nominati allo stesso modo ma mysql mi da un errore.

    uso MySQL 4.1.10-standard


    se scrivo per esempio:

    Codice PHP:
    SELECT 'ID'
    FROM newseventi
    WHERE Online 
    =1
    LIMIT 0 
    30 
    l'errore che appare in mysql è "#1052 - #1052 - Column 'Online' in where clause is ambiguous

    Codice PHP:
    SELECT 
    FROM girami_newsgirami_eventi
    WHERE Online 
    =1
    LIMIT 0 
    30 
    e come errore mi da " #1052 - Column 'Online' in where clause is ambiguous "

    come devo fare?

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Prova concatenando le colonne dei due database:

    Codice PHP:
    SELECT FROM girami_newsgirami_eventi WHERE girami_news.online AND girami_eventi.online 

  3. #3
    quando c'è ambiguità prependi il nome della tabella (o dell'alias di tabella se ne definisci uno) al nome del campo
    news.Online, eventi.Online etc. etc.

  4. #4
    Originariamente inviato da skidx
    quando c'è ambiguità prependi il nome della tabella (o dell'alias di tabella se ne definisci uno) al nome del campo
    news.Online, eventi.Online etc. etc.
    questo per identificare quale tabella.campo, ma se il nome e' identico nel resultset verranno sovrascritti.

    Quindi serve obbligatoriamente un alias per almeno uno dei campi se debbono essere estratti entrambi.

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

  5. #5
    Originariamente inviato da piero.mac
    questo per identificare quale tabella.campo, ma se il nome e' identico nel resultset verranno sovrascritti.

    Quindi serve obbligatoriamente un alias per almeno uno dei campi se debbono essere estratti entrambi.
    Sì certo, mi riferivo al problema di ambiguità nel WHERE.
    (comunque mi sembra non li sovrascriva, cambia lui il nome a uno dei campi ambigui)

  6. #6
    grazie per i consigli

    ho fatto una prova ma mi da dei risultati strani
    per cercare i titoli degli artcoli, sia news che eventi hanno il campo titolo


    Codice PHP:
    SELECT news.Titoloeventi.Titolo FROM newseventi WHERE news.canale 'musica' AND eventi.canale 'musica' 
    il risultato è una tabella con due colonne nella quale si ripetono per quattro volte le news del canale musica, e poi si ripete quattro o cinque volte diseguito lo stesso titolo degli eventi del canale musica

    ops che avrò combinato?
    devo creare un alias, devo cambiare il nome a uno dei due titoli?

  7. #7
    No, devi stabilire quale relazione esiste tra le due tabelle, altrimenti otterrai un prodotto cartesiano dei record.

    codice:
    SELECT news.Titolo as tit_news, eventi.Titolo as tit_eventi
    FROM news, eventi 
    WHERE news.canale = eventi.canale 
    AND news.canale =  'musica'

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

  8. #8
    se non vuoi un prodotto ma una somma dei record delle due tabelle, devi usare una UNION tra le singole SELECT

  9. #9
    utilizzando l'esempio di piero.mac mi da sempre quella tabella a due colonne con i risultati ripetuti,

    come si fa a fare una Union. cerco sul html.it? : :

  10. #10
    Originariamente inviato da alemyale
    utilizzando l'esempio di peiro mi da sempre quella tabella a due colonne con i risultati ripetuti,

    come si fa a fare una Union. cerco sul html.it? : :
    cerca SELECT sul manuale di mysql.

    se te ne serve solo uno usa il group by o il distinct. Il problema e' che hai una relazione molti a molti.

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