Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9

    query molto complessa su 3 tabelle

    Salve a tutti!
    ho 3 tabelle: Utenti, Interessi, Opere.

    Tabella Utenti
    CAMPI: Nome | Cognome | Nickname

    Tabella Interessi
    CAMPI: NickUtente | Interesse

    Tabella Opere
    CAMPI: Titolo | Descrizione | NickAutore

    dove Utenti.Nickname = Interessi.NickUtente = Opere.Autore

    è possibile con una sola query avere come output questo:

    L'utente Giorgy88 (nickname)
    ha come interessi: pesca, sport, musica
    ha pubblicato le seguente opere: Foto.jpg, Poesia.rtf, Video.avi

    Io vorrei fare così:
    SELECT DISTINCT Opere.Titolo, Interessi.Interesse, Utenti.Nickname
    FROM Utenti JOIN Interessi ON Utenti.Nickname=Interessi.NickUtente
    JOIN Opere ON Utenti.Nickname=Opere.Autore
    WHERE Opere.Autore='Giorgy88'

    Solo che l'output è:

    Foto.jpg
    giorgy88
    pesca

    Foto.jpg
    giorgy88
    sport

    Foto.jpg
    giorgy88
    musica

    Video.avi
    giorgy88
    pesca

    Video.avi
    giorgy88
    sport

    Video.avi
    giorgy88
    musica

    ...perchè giustamente facendo i join si generano tante righe quanti sono gli interessi e le opere a nome Giorgy88.

    Dovrei fare select annidate? O semplicemente 3 query e buonanotte??

    Spero di essere stata chiara, e che qualcuno possa spiegarmi come fare.

  2. #2
    codice:
    SELECT 'I' AS Tipo, colonne FROM utenti JOIN Interessi ON ... WHERE utente=...
    UNION
    SELECT 'O' AS Tipo, stesse_colonne FROM utenti JOIN Opere ON ... WHERE utente=...
    'I' e 'O' nel tipo ti diranno se è un interesse o un'opera

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9

    non ho capito optime!!!

    Ciao optime! Intanto ti ringrazio per l'aiuto....
    con l'esempio precedente non mi raccapezzo +, ho cambiato tutto, quindi ti propongo ciò su cui sto lavorando ora.

    TABELLA OPERE
    campi: ID | Autore | Data | Titolo | Stato

    TABELLA COMMENTI
    campi: ID | Utente | Opera

    Opere.Id = Commenti.Opera

    Io vorrei questo output:
    Opere.Titolo, Opere.Autore, Opere.Data, Opere.Stato

    Commenti.Commento 1
    Commenti.Commento 2
    Commenti.Commento 3
    Commenti.Commento 4

    Sostanzialmente per ogni opera: dettagli e vari commenti.

    stando a quanto mi hai consigliato tu e a quanto ho letto in giro su internet ho provato a fare:

    codice:
    $query="SELECT DISTINCT Titolo, Opere.Autore, Nome, Descrizione, Data, Esposizione, Categoria FROM Opere JOIN Commenti ON Opere.Id=Commenti.Opera WHERE Opere.Id = '$id_vis'
    	UNION
    	SELECT Commento, null, null, null, null, null, null FROM Opere JOIN Commenti ON Opere.Id=Commenti.Opera WHERE Opere.Id = '$id_vis'";
    ma esce fuori un disastro!

    Mi potresti chiarire questa cosa?

  4. #4

    Re: non ho capito optime!!!

    Originariamente inviato da be88
    ma esce fuori un disastro!

    Mi potresti chiarire questa cosa?
    subito! http://dizionari.corriere.it/diziona...disastro.shtml



    o intendevi altro?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9


    cos'è che sbaglio? oltre ovviamente al fatto che la select che ho riportato seleziona dei campi in più rispetto a quelli che ti ho detto esserci......

    pleeeeease

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Dovresti indicare, come da regolamento, il database su cui lavori per poter ricevere una risposta sensata.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9
    Sto lavorando in locale con XAMPP. Quindi mysql....

  8. #8

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.