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

    Query MySql - Select da 2 tabelle

    Ciao a tutti!
    Ho due tabelle identiche (cambia solo il nome della tabella, i campi sono uguali).
    Ho un form che deve fare una ricerca tra tutte e due le tabelle senza che "fetchi" (senza che estragga) i campi con la colonna 'nome' uguale...
    ho fatto una cosa del genere
    (SELECT * FROM 'tabella1' WHERE condizione AND ecc.) UNION (SELECT * FROM 'tabella2' <_poi identica alla precedente_>), ma mi da lo stesso i campi uguali!
    (ovviamente parlo di query mysql con php)

    Come risolvere?
    Help please

  2. #2

    Re: Query MySql - Select da 2 tabelle

    Originariamente inviato da sharkdrew
    ...ma mi da lo stesso i campi uguali!
    Non capisco cosa vuoi dire

    La union altro non fa che unire i risultati delle due select.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Provo a chiarire con un esempio...(rileggendo ho visto che non è troppo comprensibile quello che ho scritto xD)

    Tabella immobili
    nome prezzo
    casa1 500

    Tabella vetrina
    nome prezzo
    casa2 600
    casa1 500

    Se stampassi i risultati della precedente query avrei una cosa tipo:

    casa1 500
    casa2 600
    casa1 500

    il problema è che la casa1 la deve prendere solo da immobili o solo da vetrina! praticamente non si deve ripetere!

  4. #4
    Prova una cosa del genere:

    codice:
    (SELECT * FROM 'tabella1' WHERE campo1 = condizione1 AND ecc.) UNION (SELECT * FROM 'tabella2' WHERE campo1 <> condizione1 AND ecc.)
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    ottima soluzione! per un problema che purtoppo non è il mio...mi sono espresso male di nuovo.

    Quando estraggo i dati con quelle query non faccio riferimento al campo importante, nel senso che io non devo estrarre due righe con il campo 'nome' uguale...ma non faccio riferimento al campo 'nome' in queste due query...quindi avevo pensato ad una soluzione molto macchinosa quale creare un array di stringhe e in ogni cella andare a mettere il campo 'nome' della riga appena estratta. Poi nel momento dell'estrazione delle successive, andrei a controllare con un for se in questo array il campo 'nome' della riga che sto estraendo è già presente, e ovviamente in questo caso non stampare niente e andare avanti...

    So che cambiando la struttura della tabella il problema potrebbe semplicemente essere risolto, ma per motivi vari non posso più e mi devo arrangiare con queste due tabelle "mal fatte"...
    grazie per la pasienza "satifal" ...
    hai qualche soluzione in testa?

  6. #6
    Codice PHP:
    /*supponiamo come hai detto tu che i campi sono solo 2 cioè "nome" e "prezzo"
    allora fai così, una query per la prima tabella.*/
    $q1="SELECT * FROM tabella1 where campo=condizione"
    //e salvi i risultati ad uno ad uno con mysql_result.
    $r1=mysql_query($q1);
    $n1=mysql_result($r1,0,"nome"); //in questa variabile '$n1' stai salvando il valore del campo 'nome' di tabella1.
    $p1=mysql_result($r1,0,"prezzo"); //in questa variabile '$p1' stai salvando il valore del campo 'prezzo' di tabella1.
    //e ora fai lo stesso procedimento per la seconda tabella.
    $q2="SELECT * FROM tabella2 where campo=condizione"
    //e salvi i risultati ad uno ad uno con mysql_result.
    $r2=mysql_query($q2);
    $n2=mysql_result($r2,0,"nome"); //in questa variabile '$n2' stai salvando il valore del campo 'nome' di tabella2.
    $p2=mysql_result($r2,0,"prezzo"); //in questa variabile '$p2' stai salvando il valore del campo 'prezzo' di tabella2. 
    Anche se è la situazione più "sporca" che si possa fare funziona, l'ho scritta in 2 minuti perché ho da fare.
    Adesso che hai i singoli file puoi giocarci con cicli ed if e troverai la soluzione.

    Spero di esserti stato d'aiuto, saluti.

  7. #7
    grazie a tutti =)
    comunque sto risolvendo memorizzando in un array e controllare poi che non ci siano "nome" uguali a quelli dell'array

  8. #8
    Originariamente inviato da sharkdrew
    ottima soluzione! per un problema che purtoppo non è il mio...mi sono espresso male di nuovo.

    Quando estraggo i dati con quelle query non faccio riferimento al campo importante, nel senso che io non devo estrarre due righe con il campo 'nome' uguale...ma non faccio riferimento al campo 'nome' in queste due query...quindi avevo pensato ad una soluzione molto macchinosa quale creare un array di stringhe e in ogni cella andare a mettere il campo 'nome' della riga appena estratta. Poi nel momento dell'estrazione delle successive, andrei a controllare con un for se in questo array il campo 'nome' della riga che sto estraendo è già presente, e ovviamente in questo caso non stampare niente e andare avanti...

    So che cambiando la struttura della tabella il problema potrebbe semplicemente essere risolto, ma per motivi vari non posso più e mi devo arrangiare con queste due tabelle "mal fatte"...
    grazie per la pasienza "satifal" ...
    hai qualche soluzione in testa?
    Non riesco a capire cosa devi fare forse è meglio che posti la struttura delle tabelle e le query che esegui e ciò che vuoi ottenere perchè secondo me basta una semplicissima query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    no vabbè ormai ho risolto...grazie a tutti =) non so come si chiude la discussione...

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.