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

    query "Prodotto combinato tra due tabelle"

    Ciao a tutti,
    ho due tabelle chiamate "oggetti" e "condivisioni"

    la tabella "oggetti" registra in ogni record un oggetto creato da un utente secondo questi campi:

    id | codice_oggetto | nome_oggetto | proprietario
    esempio
    1 | 1234 | oggetto 1 | usernameUtente1

    la tabella "condivisioni", invece, traccia oggetti che sono stati condivisi con un altro utente
    id | codice_oggetto | condiviso con
    1 | 1234 | usernameUtente2

    Vorrei riuscire a realizzare una query che stampi tutti gli oggetti di usernameUtente1, ma che allo stesso tempo "contrassegni" gli oggetti che sono condivisi.

    l'output potrebbe essere una cosa del genere:

    oggetto 1 (condiviso con usernameUtenteX)
    oggetto 2
    oggetto 3
    oggetto 4 (condiviso con usernameUtenteX)
    oggetto 5 (condiviso con usernameUtenteX)

    PS:
    ll campo "codice_oggetto" è un codice univoco quindi non ci sono oggetti con lo stesso codice


    Grazie a tutti in anticipo!

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Non si capisce cosa vuoi.
    LA lista di tutti gli oggetti con a fianco la condivisione o la non condivisione?
    In questo caso

    Select oggetto.codiceOggetto, condivisioni.utente from
    Oggetti LEFT OUTER JOIN condivisioni ON Oggetti.id = condivisioni.id

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Esattamente...
    tutti gli oggetti di "usernameUtente1" con a fianco la condivisione o la non condivisione.

    Questo "a fianco" immagino sia la creazione di un nuovo campo risultante dalla query...

  4. #4
    ti basta usare LEFT JOIN. Se a destra non c'è niente, ottieni NULL

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Grazie! funziona bene, ma ho un ultimo problema...
    se uno stesso oggetto è stato condiviso con due persone diverse ovviamente la query me li stampa entrambi... a me basterebbe stamparlo solo una volta .

    oggetto 1 (condiviso)

    e non..

    oggetto 1 (condiviso)
    oggetto 1 (condiviso)

    Ho risolto con "group by" pero ovviamente cosi facendo perdo le corrispondenze successive alla prima...

    gia cosi va benissimo, MA NON C'E' UN MODO PER RAGGRUPPARLE, MA ALLO STESSO TEMPO TENERE TRACCIA DI TUTTE LE CORRISPONDENZE?
    Ultima modifica di Alifuma92; 03-05-2016 a 11:34

  6. #6
    che vuol dire raggruppare e tenere traccia? fa' un esempio!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Se uso group by otterrò un solo record per ogni nome oggetto

    il record è composto dal nome oggetto e dal utente con cui è condiviso ( o null)

    oggetto 1, utente 1
    oggetto 2, utente3
    ecc

    se però oggetto 1 è condiviso anche con utente 3
    io non vedrò la corrispondenza
    oggetto 1, utente 3

    perche ho utilizzato group by nome oggetto

  8. #8
    eh certo. o li vuoi raggruppati o li vuoi dettagliati. ripeto, fa' un esempio!

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.