magomac Inviato 8 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
bulvio Inviato 9 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 9 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
magomac Inviato 9 Luglio 2007 Autore Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
bulvio Inviato 9 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 9 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
bulvio Inviato 9 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 9 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
magomac Inviato 9 Luglio 2007 Autore Segnala Condividi 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! Link al commento Condividi su altri siti Altre opzioni di condivisione...
d0sse Inviato 9 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
macsig Inviato 9 Luglio 2007 Segnala Condividi 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... Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 10 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
magomac Inviato 10 Luglio 2007 Autore Segnala Condividi 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! Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 10 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
bulvio Inviato 11 Luglio 2007 Segnala Condividi 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
grigio60 Inviato 11 Luglio 2007 Segnala Condividi 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]] Link al commento Condividi su altri siti Altre opzioni di condivisione...
bulvio Inviato 11 Luglio 2007 Segnala Condividi Inviato 11 Luglio 2007 Tranquillo... è che, riferito al caso in oggetto la join non serve a niente... Flickr Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.