Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746

    [MySQL] aiuto per una query

    Ho una tabella che contiene un elenco di mappe dove per ognuna è indicato l'id dell'utente che le ha inserite.

    codice:
    mappe
    -----------------
    id_mappa
    id_inseritore
    nome_mappa
    ...

    Ogni utente puo' condividere le proprie mappe con altri utenti per cui ho creato un'altra tabella dove associo all'id di una mappa all'id dell'utente con cui viene condivisa.

    codice:
    mappe_condivisioni
    -----------------
    id_condivisione
    id_mappa
    id_staff
    ...
    naturalmente mappe.id_inseritore e mappe_condivisioni.id_staff fanno sempre riferimento agli id che distinguono gli utenti anche se qui si chiamano in modo diverso.

    Ora dovrei fare una SELECT che avendo l'id dell'inseritore fornisca tutte le relative mappe i cui id siano presenti sia nella tabella mappe sia nella tabella mappe_condivisioni.

    Ho provato con
    Codice PHP:
    $query"
    SELECT 
    mappe.id_mappa,
    mappe.id_inseritore,
    mappe.nome_mappa
    FROM   mappe
    INNER JOIN mappe_condivisioni
    ON mappe.id_mappa = mappe_condivisioni.id_mappa
    WHERE  mappe.id_inseritore = '"
    .$_dati_utente['id_staff']."'
    OR mappe_condivisioni.id_staff = '"
    .$_dati_utente['id_staff']."'" 
    Fallimentare tentativo causa ignoranza

    che via devo seguire?
    Errare humanum est, perseverare ovest

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    devi fare una UNION

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Originariamente inviato da luca200
    devi fare una UNION
    ma per utilizzare la UNION non si dovrebbero avere gli stessi campi anche se in diverse tabelle? Qui devo estrarre i nome_mappa che si trovano solo nella tabella mappe.

    :master:

    Azz, vedo adesso che la UNION si puoì usare dalla versione 4, il db che ho in hosting è ancora alla versione 3.23.57
    Errare humanum est, perseverare ovest

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    se non puoi fare una union, fai semplicemente due query:

    $query1="SELECT
    mappe.id_mappa,
    mappe.id_inseritore,
    mappe.nome_mappa
    FROM mappe
    WHERE mappe.id_inseritore = '".$_dati_utente['id_staff']."'"


    $query2="SELECT
    mappe.id_mappa,
    mappe.id_inseritore,
    mappe.nome_mappa
    FROM mappe
    INNER JOIN mappe_condivisioni
    ON mappe.id_mappa = mappe_condivisioni.id_mappa
    WHERE mappe_condivisioni.id_staff = '".$_dati_utente['id_staff']."'" ;

    quando però unisci i risultati, stai attento che la stessa mappa non compaia più volte

  5. #5
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Grazie ma due query così non mi vanno bene, devo ottenere un unico result set. Ho risolto sempre con due query ma in un altro modo. Prima estraggo dalla tabella 'mappe_condivisioni' tutti gli id_mappa associati all'id dell'utente mettendoli in una stringa e poi li metto nella query con una condizione di appartenenza, mi spiego meglio con un esempio:

    codice:
    SELECT id_mappa,nome_mappa 
    FROM mappe 
    WHERE ( id_inseritore = '30' OR id_mappa IN ('10','12','15') ) ......
    Errare humanum est, perseverare ovest

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.