magomac Inviato 8 Luglio 2007 Segnala Inviato 8 Luglio 2007 Ciao a tutti.... io avrei bisogno di fare una tabella contenente i dati provenienti da tre tabelle MySql diverse IN ORDINE ALFABETICO. Mi spiego meglio... il programma php dovrebbe prendere tutti i dati della tabella Pippo, tutti quelli della tabella Pluto e tutti quelli della tabella Topolino e ordinarli in ordine alfabetico. Visto che MySql non supporta le query Join senza legami tra le tabelle come posso fare? Grazie
bulvio Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Penso di non aver capito molto bene... devi creare una select contenente tutti i record e tutti i campi di tutte le tabelle? secondo me impazzisci meno facendo select distinte e archiviando i dati in array ordinati... però non so se ho capito bene ciò che devi fare... Flickr
grigio60 Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Visto che MySql non supporta le query Join senza legami tra le tabelle come posso fare? puoi creare una tabella "al volo" (temporanea) popolandola con i dati specifici da tutte e tre le tabelle e poi ordinare su questa tabella Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
magomac Inviato 9 Luglio 2007 Autore Segnala Inviato 9 Luglio 2007 Non avevo pensato alla soluzione dell'array che per quello che devo fare forse è la più semplice.... mi potreste scrivere gentilmente come mandare nello stesso array i risultati di tre query e ordinarli? Grazie ciao
bulvio Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Non avevo pensato alla soluzione dell'array che per quello che devo fare forse è la più semplice.... mi potreste scrivere gentilmente come mandare nello stesso array i risultati di tre query e ordinarli?Grazie ciao ma quanti campi hanno le tre tabelle? Flickr
grigio60 Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Non avevo pensato alla soluzione dell'array che per quello che devo fare forse è la più semplice non ne sono sicuro che sia la più semplice con la tabella "creata al volo" (ossia con una CREATE TEMPORARY TABLE) risolvi il tutto con quattro query più quella per la creazione della tabella temporanea Indipendentemente dalla soluzione, è ovvio che le tre tabelle sorgenti devono avere dei dati tra di loro un minimo omogenei, se non altro devono avere in comune la colonna su cui devi ordinare alfabeticamente (il solito discorso che le operazioni si eseguono su dati omogenei, mele con mele e pere con pere) lo schema delle query in pratica è il seguente: Query 1 CREATE TEMPORARY TABLE collettore (segue codice per creare colonne e tipi) Query 2 INSERT INTO collettore SELECT * FROM Pippo Query 3 INSERT INTO collettore SELECT * FROM Pluto Query 4 INSERT INTO collettore SELECT * FROM Paperino Query 5 SELECT * FROM collettore order by [i]nome della colonna su cui ordinare[/i] Condizione: Pippo, Pluto e Paperino devono avere lo stesso numero di colonne e la stessa struttura sennò il tutto non funziona. Del resto se tu volessi mescolare insieme tabelle completamente differenti senza nemmeno un dato logico in comune, la tua stessa idea sarebbe priva di senso. La tabella collettore è di tipo TEMPORARY: viene cancellata automaticamente alla chiusura della sessione inoltre è specifica per sessione: questo significa che se in un certo istante ci sono DUE utenti diversi che devono usare la tabella collettore in realtà mysql ne crea due, una per ogni utente, permettendo così di avere contemporaneamente anche ordinamenti su criteri (colonne) differenti. La soluzione basata sugli array implica che poi tu ti debba smazzare (=scrivere) a manina anche l'algoritmo di ordinamento, per quello ti dico occhio che non è detto che sia davvero la soluzione più semplice Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
bulvio Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 non ne sono sicuro che sia la più semplice con la tabella "creata al volo" (ossia con una CREATE TEMPORARY TABLE) risolvi il tutto con quattro query più quella per la creazione della tabella temporanea Indipendentemente dalla soluzione, è ovvio che le tre tabelle sorgenti devono avere dei dati tra di loro un minimo omogenei, se non altro devono avere in comune la colonna su cui devi ordinare alfabeticamente (il solito discorso che le operazioni si eseguono su dati omogenei, mele con mele e pere con pere) lo schema delle query in pratica è il seguente: Query 1 CREATE TEMPORARY TABLE collettore (segue codice per creare colonne e tipi) Query 2 INSERT INTO collettore SELECT * FROM Pippo Query 3 INSERT INTO collettore SELECT * FROM Pluto Query 4 INSERT INTO collettore SELECT * FROM Paperino Query 5 SELECT * FROM collettore order by [i]nome della colonna su cui ordinare[/i] Condizione: Pippo, Pluto e Paperino devono avere lo stesso numero di colonne e la stessa struttura sennò il tutto non funziona. Del resto se tu volessi mescolare insieme tabelle completamente differenti senza nemmeno un dato logico in comune, la tua stessa idea sarebbe priva di senso. La tabella collettore è di tipo TEMPORARY: viene cancellata automaticamente alla chiusura della sessione inoltre è specifica per sessione: questo significa che se in un certo istante ci sono DUE utenti diversi che devono usare la tabella collettore in realtà mysql ne crea due, una per ogni utente, permettendo così di avere contemporaneamente anche ordinamenti su criteri (colonne) differenti. La soluzione basata sugli array implica che poi tu ti debba smazzare (=scrivere) a manina anche l'algoritmo di ordinamento, per quello ti dico occhio che non è detto che sia davvero la soluzione più semplice direi che quoto al 100% Flickr
grigio60 Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Visto che MySql non supporta le query Join senza legami tra le tabelle come posso fare? cosa intendi dire con "senza legami"? Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
magomac Inviato 9 Luglio 2007 Autore Segnala Inviato 9 Luglio 2007 Ok come sempre grazie mille grigio!!! Le tabelle sono esattamente identiche quindi non ho problemi..... con senza legami intendo che non posso creare una query Join siccome i dati contenuti nelle due tabelle non sono legati tra di loro..... Ciao a tutti!
d0sse Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 ma mysql non gestisce le join! ...mi sembra impossibile non puoi fare x esempio: SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id; per creare una join? NETTuno Fanatic/Creative/Developers
macsig Inviato 9 Luglio 2007 Segnala Inviato 9 Luglio 2007 Le tabelle sono esattamente identiche quindi non ho problemi..... con senza legami intendo che non posso creare una query Join siccome i dati contenuti nelle due tabelle non sono legati tra di loro.....Ciao a tutti! Non puo usare una UNION ??? Credo esista anche in MySQL Alla Prossima...
grigio60 Inviato 10 Luglio 2007 Segnala Inviato 10 Luglio 2007 Non puo usare una UNION ??? se le tabelle sono identiche in effetti questa solutione è ancora meglio, perché UNION fra l'altro elimina le righe eventualmente duplicate. in questo caso la sintassi della query diventa molto più semplice: (SELECT * FROM Pippo) UNION (SELECT * FROM Pluto) UNION (SELECT * from Paperino) ORDER BY nome_colonna Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
magomac Inviato 10 Luglio 2007 Autore Segnala Inviato 10 Luglio 2007 ma mysql non gestisce le join! ...mi sembra impossibilenon puoi fare x esempio: SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id; per creare una join? Potrei ma non è quello che devo fare! I dati delle varie tabelle non sono collegati da ID o altro! Non puo usare una UNION ??? Credo esista anche in MySQL se le tabelle sono identiche in effetti questa solutione è ancora meglio, perché UNION fra l'altro elimina le righe eventualmente duplicate. in questo caso la sintassi della query diventa molto più semplice: (SELECT * FROM Pippo) UNION (SELECT * FROM Pluto) UNION (SELECT * from Paperino) ORDER BY nome_colonna Grazie mille! Provo!
grigio60 Inviato 10 Luglio 2007 Segnala Inviato 10 Luglio 2007 Potrei ma non è quello che devo fare! I dati delle varie tabelle non sono collegati da ID o altro! guarda che non sei obbligato a usare gli ID per fare le join Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
bulvio Inviato 11 Luglio 2007 Segnala Inviato 11 Luglio 2007 guarda che non sei obbligato a usare gli ID per fare le join sì, ma devi almeno avere 1 campo per tabella con dati simili in modo da applicare i criteri di unione su quei 2 campi... se hai 2 tabelle, con 1 solo campo caduna, la prima con campo "Nomi 1" e la seconda "Nomi 2", e nient'altro, è impossibile fare una join... Flickr
grigio60 Inviato 11 Luglio 2007 Segnala Inviato 11 Luglio 2007 se hai 2 tabelle, con 1 solo campo caduna, la prima con campo "Nomi 1" e la seconda "Nomi 2", e nient'altro, è impossibile fare una join... ma io mica ho detto questo, ho solo detto che non è necessario usare il campo ID per eseguire una join :ciao: Serve aiuto? Posso darti una mano in Webmasters - Aiuto Software - Da Windows a Mac Mappa Utenti ItaliaMac [[miao]]
bulvio Inviato 11 Luglio 2007 Segnala Inviato 11 Luglio 2007 Tranquillo... è che, riferito al caso in oggetto la join non serve a niente... Flickr
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.