Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18

Discussione: query su due tabelle

Hybrid View

  1. #1
    codice:
    SELECT s.nome FROM schede s, utenti_abil u WHERE s.stato = 1 AND s.id = u.id_scheda AND u.id_utente = $idUtente
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    Solo che così ottengo le schede abilitate ma disabilitate per l'utente in sessione.
    Mentre io devo ottenere le schede abilitate per l'utente.

  3. #3
    Perdonami, ma se la tebella è:

    utenti_abil
    id, id_scheda, id_utente

    io interpreto che l'utente avente id_utente è abilitato alla scheda avente id_scheda!

    Se la logica è opposta basta sotituire = con != non capisco quale sia il problema.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    Non va cmq.
    Il principio è questo, la tabella utenti_abil (forse era meglio chiamarla utenti_disabil) serve solo per registrare chi ha visto cosa?
    Per cui se la tabella utenti_abil è vuota tutti possono vedere i prodotti con stato=1 della tabella schede.
    Man a mano che un utente visiona un prodotto viene aggiunto un record nella tabella utenti_abil marcando l'id_scheda visionata e l'id_utente che ha visionato.

    Faccio un esempio

    schede
    id-----nome----stato----
    1-----art.A----0----
    2-----art.B----0---
    3----art.C-----1----
    4----art.D-----1-----
    5----art.E-----1-----

    utenti_abil
    id----id_scheda----id_utente---
    1-----2------------2-----
    2-----2------------1------
    3-----1------------1-----
    4-----3------------1-----
    5-----1------------2-----
    6-----1------------3-----
    7-----4------------2-----
    8-----5------------2-----

    L'utente con id=1 vedrà solo i prodotti art.D e art.E cioè schede.id=4 e 5 perchè gli altri (1,2,3 sono già stati visionati) compaiono nella tabella utenti_abil con id_utente=1
    Ultima modifica di lume70; 15-11-2013 a 16:27

  5. #5
    Quote Originariamente inviata da lume70 Visualizza il messaggio
    Non va cmq.
    Il principio è questo, la tabella utenti_abil (forse era meglio chiamarla utenti_disabil)
    ...ecco...magari!

    ...quindi? Qual'è il problema? Ti ho già risposto prima dicendoti che se la logica era invertita bastava sostituire = con !=
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    Ripeto la tua soluzione non va lo stesso pur mettendo !=
    Codice PHP:
    $risult mysql_query("SELECT * FROM schede, utenti_abil WHERE schede.stato = 1 AND schede.id_scheda != utenti_abil.id_assegn AND utenti_abil.id_utente != $sessione_utente");

    while(
    $row mysql_fetch_array$risult )) {
                   
            echo 
    "<tr><td>".$row['nome']."</td><td>".$row['id_scheda']."</td><td><a href=\"start.php?mod=$id_scheda&modul=$sessione_utente\">[START]</a></td></tr>";


  7. #7
    Però un minimo di iniziativa e di ragionamento!!!
    Il != va messo solamente sul confronto tra id e id_scheda e NON anche sull'id_utente.
    Basta un minimo di ragionamento!!!

    Poi:

    Mia query:
    codice:
    SELECT 
        s.nome 
    FROM 
        schede s, 
        utenti_abil u 
    WHERE 
        s.stato = 1 AND 
        s.id = u.id_scheda AND 
        u.id_utente = $idUtente

    Struttura tabelle da te postata:

    codice:
    schede
    id-----nome----stato----
    
    utenti_abil
    id----id_scheda----id_utente---
    Tua query:

    codice:
    SELECT 
        * 
    FROM 
        schede, 
        utenti_abil 
    WHERE 
        schede.stato = 1 AND 
        schede.id_scheda != utenti_abil.id_assegn AND 
        utenti_abil.id_utente != $sessione_utente
    Da dove escono:

    schede.id_scheda e utenti_abil.id_assegn ????

    Non è che puoi postare una struttura di tabella e poi modificarla e fare le prove su una struttura differente. Così non se ne esce più!!!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    147
    Si ho fatto della confusione, con nomi di tabelle... ormai nn ne posso più tra prove e riprove.

    Adesso ho rinominato le tabelle e i campi in modo più chiaro.
    (se riesco metto i file .sql)

    scheda:
    scheda.JPG

    chk:
    check.JPG

    Se accedo con utente che ha id=1 devo vedere:
    articoloB, articoloC, articoloE
    Se accedo con id=3
    articoloB, articoloC


    L'utente con cui accedo ha id=1
    Quindi con:
    Codice PHP:
            $risult mysql_query("SELECT * FROM scheda s ,chk u WHERE s.stato=1 AND s.id!=u.idscheda AND u.id_utente != $sessioneid"); 
    ottengo
    articoloB, articoloB, articoloC, articoloC, articoloE

    con:
    Codice PHP:
            $risult mysql_query("SELECT * FROM scheda s ,chk u WHERE s.stato=1 AND s.id=u.idscheda AND u.id_utente = $sessioneid"); 
    non ottengo nulla
    File allegati File allegati

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 © 2026 vBulletin Solutions, Inc. All rights reserved.