Vai al contenuto

Query di selezione da più tabelle senza legami


magomac

Messaggi raccomandati

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

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...

Link al commento
Condividi su altri siti

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

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?

Link al commento
Condividi su altri siti

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):D

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

non ne sono sicuro che sia la più semplice :D

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 :D

direi che quoto al 100% :)

Link al commento
Condividi su altri siti

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

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

:oops::ciao::ghghgh:

Alla Prossima...

Link al commento
Condividi su altri siti

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

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?

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

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 :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

guarda che non sei obbligato a usare gli ID per fare le join :ciao:

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...

:fiorellino:

Link al commento
Condividi su altri siti

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...

:angioletto:

ma io mica ho detto questo, ho solo detto che non è necessario usare il campo ID per eseguire una join :ghghgh::ciao::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

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...