Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Select da 2 tabelle

  1. #1

    Select da 2 tabelle

    salve a tutti
    come posso fare un select articoli da 2 tabelle separate??

    Devo selezionare titolo, descrizione, link da table1 e table2

    Ho provato così ma mi da' errore:
    $s="SELECT * FROM $table1, $table2 WHERE attiva='si' ";

    Premetto che entrambe le tabelle hanno gli stessi campi.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Innanzi tutto se le tabelle sono uguali... che senso ha tenerle separate???

    In ogni caso l'unica cosa che puoi usare in questo caso e' una union
    http://dev.mysql.com/doc/refman/4.1/en/union.html

    Occhio pero' che non tutte le versioni di mysql la supportano.

    No pvt per sollecitare risposte, grazie.

  3. #3
    ciao Grazie della risposta!
    Scusa ma sono stato troppo generico...
    è chiaro che se fossero perfettamente uguali avrei tenuto un unica tabella, su questo non ci piove!
    Sono i campi che mi interessano che sono uguali per entrambe le tabelle.
    In ogni caso ora ci do' un'occhiata al link che mi hai passato, mi sembra molto interessante!

    spero di trovare la soluzione lì!

    grazieee

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per fare una union devi avere lo stesso numero di campi. Quindi se le due tabelle hanno strutture diverse farai la select sugli stessi campi.

    select campo1,campo2 from tabella1
    union
    select campo1,campo2 from tabella2


  5. #5
    Ho provato con queste 3 soluzioni:


    $sql="SELECT * FROM ((SELECT * FROM eventi WHERE ordine='01') UNION (SELECT * FROM notizie WHERE ordine='01')) ORDER data_ins desc LIMIT 0,1";

    $sql="SELECT * FROM ((SELECT * FROM eventi) UNION (SELECT * FROM notizie)) WHERE ordine='01' ORDER data_ins desc LIMIT 0,1";

    $sql="((SELECT * FROM eventi) UNION (SELECT * FROM notizie)) WHERE ordine='01' ORDER data_ins desc LIMIT 0,1";

    Niente da fare, mi da continuamente errore.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da scalcodesign
    Ho provato con queste 3 soluzioni:


    $sql="SELECT * FROM ((SELECT * FROM eventi WHERE ordine='01') UNION (SELECT * FROM notizie WHERE ordine='01')) ORDER data_ins desc LIMIT 0,1";

    $sql="SELECT * FROM ((SELECT * FROM eventi) UNION (SELECT * FROM notizie)) WHERE ordine='01' ORDER data_ins desc LIMIT 0,1";

    $sql="((SELECT * FROM eventi) UNION (SELECT * FROM notizie)) WHERE ordine='01' ORDER data_ins desc LIMIT 0,1";

    Niente da fare, mi da continuamente errore.
    Te l'ho detto. Le tabelle devono avere lo stesso numero di campi (nel momento in cui vai a fare la union).
    E poi non capisco il senso
    di SELECT * FROM ((SELECT * FROM eventi WHERE ordine='01

    fai

    codice:
    (select i campi che ti interessano FROM eventi WHERE ordine='01' order by data_ins desc LIMIT 0,1  )
    union
    (select gli stessi campi che ti interessano FROM notizie WHERE ordine='01' order by data_ins desc LIMIT 0,1  )

  7. #7
    no scusa, avevo risposto ancor prima di vedere la tua risposta!
    Quelli che ho scritto prima sono query prese da esempi trovate in rete, ho solo sostituito i parametri con i miei. Anch'io trovo strano la doppia SELECT * FROM(ecc..
    Cmqe
    il problema è questo:
    Ho 2 tabelle (una notizie e una eventi) voglio far comparire in prima pagina SOLO 1 NOTIZIA che deve essere l'ultima notizia inserita tra le 2 tabelle. (non una e una)

    io ho fatto come mi hai scritto te

    $sql="(select id, titolo, descrizione1, img2 FROM eventi WHERE ordine='01' order by data_ins desc LIMIT 0,1) UNION (select id, titolo, descrizione1, img2 FROM notizie WHERE ordine='01' order by data_ins desc LIMIT 0,1)";
    $result=mysql_query($sql);
    $d=mysql_fetch_array($result);

    ma mi da' sempre errore!

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova a eseguirla da phpmyadmin o dall'interfaccia che usi. Se ti da errore scrivici quale.

    codice:
    (select id, titolo, descrizione1, img2 
    FROM eventi 
    WHERE ordine='01' order by data_ins desc LIMIT 0,1) 
    UNION 
    (select id, titolo, descrizione1, img2 
    FROM notizie WHERE ordine='01' order by data_ins desc LIMIT 0,1)

  9. #9
    Attenzione, in questa macchina ho MySQL - 3.23.58



    Codice PHP:
    Errore

    query SQL
    Documentazione

    (
    SELECT idtitolodescrizione1img2
    FROM eventi
    WHERE ordine 
    '01'
    ORDER BY data_ins DESC
    LIMIT 0 
    1
    )
    UNION (

    SELECT idtitolodescrizione1img2
    FROM notizie
    WHERE ordine 
    '01'
    ORDER BY data_ins DESC
    LIMIT 0 
    1
    )
    LIMIT 0 30

    Messaggio di MySQL
    Documentazione
    #1064 - You have an error in your SQL syntax near '( select id , titolo , descrizione1 , img2  FROM eventi  WHERE ordine = '01' ord' at line 1 

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da scalcodesign
    Attenzione, in questa macchina ho MySQL - 3.23.58
    Allora niente union.
    L'union è disponibile dalla versione 4.0 se ricordo bene.

    Devi fare due query separate.

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.