Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 38
  1. #11
    Vi posto il codice che utilizzo..

    codice:
      
    $select2 = "SELECT * FROM A LEFT JOIN B ON A.id_gruppo = B.id_grupp WHERE A.id_gruppo IS NULL AND B.id_camp = '$id'"; 
    
    $query1 = mysql_query ($select2) or die (mysql_error());
    
    while ($row1 = mysql_fetch_array ($query1)) {
    
    echo "<tr><td>$row1[gruppo]</td>
    <td><input type='checkbox' name='id[]' value='$row1[id_gruppo]'></td>
    </tr>";
    }
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  2. #12
    Ho dato appena un'occhiata senza approfondire oltre....

    Ti dico subito l'incongruenza..... B.id_camp = '$id'

    Poi e' errata la configurazione che proponi:

    codice:
     
    -------------------- 
    id_gruppo | Gruppo 
    -------------------- 
    1         | Gruppo_x 
    2         | Gruppo_z 
    3         | Gruppo_y 
    4         | Gruppo_k 
    
    ------------------ 
    id_gruppo | id_camp 
    ------------------ 
    1         |  5 
    3         |  5 
    4         |  3 
    4         |  5 
    2         |  1
    A questo punto, con id_camp = '$id'(5) dovrebbe uscire 2, perché è l'elemento mancante in B!!!
    La tua query

    Quale' il campo relazionato????? :master:

    SELECT * FROM A
    LEFT JOIN B
    ON A.id_gruppo = B.id_grupp
    WHERE A.id_gruppo IS NULL
    AND B.id_camp = '$id'


    Decisamente incongruente....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #13
    Il campo relazionato esiste, tranquillo. Avevo aggiunto una O di troppo.


    --------------------
    id_gruppo | Gruppo
    --------------------
    1 | Gruppo_x
    2 | Gruppo_z
    3 | Gruppo_y
    4 | Gruppo_k

    ------------------
    id_grupp | id_camp
    ------------------
    1 | 5
    3 | 5
    4 | 3
    4 | 5
    2 | 1




    SELECT * FROM A LEFT JOIN B ON A.id_gruppo = B.id_grupp WHERE A.id_gruppo IS NULL AND B.id_camp = '$id'



    Perché dici che id_camp ='$id' è incongruente?
    La variabile $id viene catturata dalla pagina web (per intenderci xxxxx.php?id=1).

    Io non vedo incongruenze
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  4. #14
    L'incongruenza e' che cerchi un elemento mancante in B tramite una relazione con A che ha nulla a che vedere con l'elemento mancante.

    id_camp non ha riferimenti con A.

    Tutti i riferimenti di A.id_gruppo sono presenti in B.id_grupp come puoi verificare.

    La query che fai serve a trovare elementi di id_gruppo presenti in A ed assenti in id_grupp di B.

    Quindi nessun senso ... almeno per la query.

    Se id_camp e' presente o assente e' un esclusivo problema della tabella B. tra l'altro mancherebbe anche il 4 e non solo il 2.

    Spero di essere stato chiaro....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Adesso ho capito. Io credevo possibile poter fare un confronto da una parte sfruttando l'unione tra tabelle e per la clausola no.
    Dici che mi è impossibile sfruttare di sottoquery correlate per raggiungere il mio scopo?
    Oppure devo mettere mano alla tabella?
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  6. #16
    Originariamente inviato da Blue_savana
    Adesso ho capito. Io credevo possibile poter fare un confronto da una parte sfruttando l'unione tra tabelle e per la clausola no.
    Dici che mi è impossibile sfruttare di sottoquery correlate per raggiungere il mio scopo?
    Oppure devo mettere mano alla tabella?
    Neanche con sottoquery. B.id_camp e' un dato appartenente alla tabella b. Se vuoi sapere se c'e' 2 sara':

    where id_camp= 2

    Poi conti le righe estratte se zero 2 e' assente. Non hai una relazione con altro. Se id_camp fosse invece l'id di una tabella C dove trovi, per esempio campo, e quindi b.id_camp = c.id_campo
    ecco che potresti trovare tutte i c.id_campo assenti da b.id_camp

    tanto per esemplificare qualcosa....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #17

    Forse è meglio se ti spiego qualcosina in +

    Io ho praticamente l'esigenza di mettere in relazione i gruppi (contenuti nella tabella A) con alcune campagne (contenute in una tabella C).
    La tabella B unisce gli id delle 2 tabelle, A e C.
    A una campagna potranno essere associati + gruppi, e uno stesso gruppo potrà appartenere a + campagne.

    Ora qual'è il problema? Quando io propongo una maschera per consentire l'associazione dei gruppi a una certa campagna, i valori vengono memorizzati nella tabella B, secondo quello schema di prima.
    Io posso scegliere di associare, su un totale di 6 gruppi, solo 2 a una certa campagna.
    Poi però la persona decide di cambiare idea, e associa altri gruppi, magari alcuni già precedentemente associati e così si crea una duplicazione indesiderata.
    Per questo io mi spacco la testa per fare in modo che, ogniqualvolta i valori vengono caricati nella tabella B, vengano al tempo stesso eliminati dalla tabella A, perché già utilizzati!

    Quindi se in una prima maschera ho gruppo1, gruppo2 e gruppo3 e io inserisco gruppo2, vorrei che in successivi cambiamenti vengano visualizzati solo gruppo1 e gruppo3.

    Spero di averti fornito qualche altro elemento utile.
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  8. #18
    La tabella C esiste.
    Sarebbe quella delle campagne, strutturata allo stesso modo dei gruppi.

    A
    -----
    id_gruppo
    gruppo

    B
    --------
    id_grupp
    id_camp

    C
    -------
    id_campagna
    campagna
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  9. #19
    Sposta la query tra C e B invece che tra A e B.

    Ma togli la cond b.id_camp='$id'

    non avrebbe senso...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #20
    Voglio farti i miei complimenti per la tua attenzione!
    Faccio qualche prova e poi ti aggiorno!

    Grazie infinite.
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

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.