Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44

    OUTER SELECT JOIN? [select da + tabelle con campi diversi]

    Salve a tutti,
    frequentavo il forum una decina d'anni fa...
    ed ora eccomi di nuovo qui

    Arrivo subito al dunque:

    Devo effettuare una query su due tabelle diverse con campi diversi che hanno in comune un campo, per esempio mio_id.

    Ora il discorso è che una tabella ha 5 righe dove mio_id = x
    metre l'altra tabella ha 1 riga dove mio_id = x

    La UNION SELECT non posso utilizzarla giacchè le tabelle hanno campi diversi, mentre se utilizzo una INNER/LEFT JOIN la tabella che restituisce 1 righe duplica le righe 4 volte.

    Suggerimenti?

    Grazie a tutti.
    S:

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: OUTER SELECT JOIN? [select da + tabelle con campi diversi]

    Originariamente inviato da zimok
    Suggerimenti?
    Sì, spiegare cosa ti serve e perché

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    Procedo con esempi:

    TABELLA 1

    id
    id_ref
    titolo
    immagine
    descrizione

    TABELLA 2
    id
    id_ref
    titolo
    video
    thumbnail
    descrizione

    In un'unica query vorrei tirare fuori tutte le righe delle due tabelle dove id_ref = x


    Ora, per esempio, se nella tabella 1 ho 20 record con id_ref = 2 e nella tabella 2 ho 5 record con id_ref = 20 con una INNER JOIN i risultati saranno duplicati.

    Non vorrei usare due query distinte.
    Nel frattempo sto consultando la docu. di MySQL e sto procedendo a tentativi, mi faceva piacere conoscere altri pareri.

    Ciao e grazie.
    S:

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per come l'hai messa, non ci sono alternative.
    Comunque continui a non spiegare cosa ti serve. Non ho capito cosa contengono quelle tabelle, e se sono correlate. Ad occhio e croce direi di no, e se non lo sono una join è insensata per definizione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    La relazione avviene tramite il campo id_ref

    A me serve tirare fuori una gallery multimediale che contiene diversi tipi di media, nello specifico immagini e video. Ora, le immagini vengono "uploadate" mentre i video vengono presi da codice HTML (che punta ad un sito esterno come youtube).

    ID_REF fa riferimento all'album a cui appartengono i media.

    Siccome sto sviluppando tutto sotto TYPO3 se ti posto l'intera struttura delle tabella rischiamo di impazzire

    Sto arrivando pure io alla conclusione che non ci siano alternative alle query multiple...

    Grazie mille dell'interessamento.
    S:

  6. #6
    Ma secondo me se usi una DISTINCT fai prima. Così per ogni record duplicato ottieni solo un entry (a patto che gli attributi selezionati siano uguali).

    Oppure fai due query nidificate (anzichè separate).


    Se invece intendi un'altra cosa che mi sembra di aver capito (spiegati meglio! ) dovresti usare la UNION rinominando i vari attributi con dei nomi uguali per entrambe le tabelle.

    Se stai chiedendo di fare una UNION di tabelle con campi diversi: non si può fare.

    E poi cosa si duplicherebbe?
    I risultati dei video e delle immagini?
    Per me sarebbe normale.


    Devi fare un elenco in cui hai aggregate immagini e video, per caso?

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Come immaginavo: le due tabelle NON SONO in relazione. Il campo id_ref è una relazione ad una terza tabella.
    Ergo: la join è fuori discussione. Il modo migliore sono sicuramente le query separate.
    Per farne una sola dovresti mettere in piedi una UNION che però sarebbe più fatica che gusto

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    Forse faccio prima a fare così:

    tx_gallery_foto

    uid
    album_id
    titolo
    data_inserimento
    descrizione
    file
    tags


    tx_gallery_video
    uid
    album_id
    titolo
    data_inserimento
    descrizione
    sorgente_html
    thumbnail
    tags

    In una pagina (tramite php) io devo mostrare ("listare" sarebbe meglio) i contenuti delle due tabelle e vorrei farlo utilizzando una sola query.

    La UNION l'ho già messa fuori discussione giacchè i campi delle due tabelle sono diversi tra loro, sia per numero che per tipo.

    Dici di usare un DISTINCT? Ora mi informo meglio sulla documentazione.

    Cosa intendi per query nidificate? Delle subquery?

    Per il resto: grazie mille.
    S:

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    44
    x luca200: hai ragione le due tabelle non sono in relazione tra loro, ma sono in relazione con una terza tabella.

    Pensavo (anzi speravo) che fosse possibile "accorpare" i risultati di una query eseguita su più tabelle come accade per le UNION ma nel caso specifico di tabelle con campi diversi. Mi sa che tocca ripassarmi un po' di manualistica mysql :master:

    Grazie ancora
    S:

  10. #10
    Ops avevi già risposto.

    Beh secondo me è possibile, tramite UNION se vai a selezionare un gruppo di attributi comuni

    Per esempio:
    codice:
    SELECT Id, id_ref, titolo, immagine as Link, descrizione, 0 as thumbnail, 'img' as Tipo FROM TbImmagini WHERE id_ref = x
    UNION
    SELECT Id, id_ref, titolo, video as Link, '' as Descrizione, thumbnail, 'vid' as Tipo FROM TbVideo WHERE id_ref = x
    Così otterrai un recordset con i dati di tutti i risultati mischiati (se li vuoi anche ordinati in ordine alfabetico fai una "SELECT * FROM (<query_sopra>) ORDER BY Titolo, Descrizione".

    Credo tu voglia fare questo. Ovviamente dovrai per ogni record controllare il campo Tipo per processare diversamente i dati che ottieni in base al video o l'immagine.


    Ti è utile?

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.