Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    [SQL] Aiuto su left join

    Ciao ragazzi, nonostante sia ormai un po' di tempo che uso sql e php è la prima volta che do un occhio alle left join.

    Quindi quello che segue potrebbe contenere delle cavolate immani

    In pratica devo relazionare 3 tabelle.

    faccio un esempio pratico:

    tabella gruppi
    codice:
    +----+------+---------+--------+-------------+
    | id | nome | privato | aperto | id_creatore |
    +----+------+---------+--------+-------------+
    tabella iscrizioni
    codice:
    +-----------+-----------+
    | id_utente | id_gruppo |
    +-----------+-----------+
    tabella editori
    codice:
    +-----------+-----------+
    | id_utente | id_gruppo |
    +-----------+-----------+
    In poche parole, devo permettere l'inserimento di un articolo in un gruppo solo in queste condizioni:

    1. L'utente è creatore del gruppo (campo id_creatore)
    2. Il gruppo è aperto, quindi chiunque è presente nella tabella iscrizioni può inserire un articolo al gruppo.
    3. Il gruppo è chiuso, per poter inserire l'articolo nel gruppo bisogna essere presenti nella tabella editori oltre che in quella iscrizioni.

    ... ci sarebbero altre condizioni, ma voglio procedere per gradi, per il momento ho risolto le prime 2 condizioni con questa query:

    codice:
    SELECT * FROM gruppi g LEFT JOIN iscrizioni i ON i.id_gruppo = g.id WHERE (g.creator = 1) || ((g.grp_private = 0) && (g.grp_aperto = 1) && (i.id_utente = 1));
    (il valore 1 nella query è compilato dinamicamente, ed è l'id dell'utente in sessione)
    Posso ottenere il risultato che voglio in una query sola?
    Come posso modificarla in caso?

    grazie

  2. #2
    non ho troppo ben capito la struttura ma a grandi linee sei messo cosi:

    SELECT * FROM GRUPPI
    LEFT JOIN ISCRIZIONI ON GRUPPI.ID = ISCRIZIONI.ID_GRUPPO
    LEFT JOIN EDITORI ON GRUPPI.ID = ISCRIZIONI.ID_GRUPPO

  3. #3
    io non farei due tabelle distinte editori e iscrizioni ma una sola e metterei un campo isEditore
    dove se settato a 1 so che l'iscritto e' anche editore e se e' vuoto so che non lo e'

    cosi dovresti semplificarti di molto la vita no?
    http://www.mcganass.com

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da mcganass
    io non farei due tabelle distinte editori e iscrizioni ma una sola e metterei un campo isEditore
    dove se settato a 1 so che l'iscritto e' anche editore e se e' vuoto so che non lo e'

    cosi dovresti semplificarti di molto la vita no?
    azz VVoVe: in effetti.. che fesso... mi sono incasinato per nulla!

    Grazie di cuore

  5. #5

    no hay problmema
    http://www.mcganass.com

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.