Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. [MySql] Join un po particolare tra 3 tabelle
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • A
      andrearufo User Attivo • ultima modifica di

      Io userei la funzione mysql_affected_rows per contare le righe di una chiamata: anche annidando due cicli la cosa mi pare molto veloce!

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • F
        fehu User • ultima modifica di

        Il mio problema è che se non uso il distinct me ne restituisce migliaia perchè conta le righe dei comuni, se uso il distinct sull'id delle province mi restituisce un recordset vuoto

        non avevo pensato ad utilizzare quella funzione, ma penso che il problema rimanga lo stesso di adesso che uso un count()

        non lo so, sarà inesperienza o uno di quei casi limite in cui mysql ricompila la query e fa pasticci

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • A
          andrearufo User Attivo • ultima modifica di

          Mh... Con mysql_affected_rows puoi semplicemente fare un if se uguale a 0 allora stampa il nome!

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • F
            fehu User • ultima modifica di

            ah chiedo scusa pensavo fosse una funzione di mysql, masochisticamente sto utilizzando asp

            non c'è un modo per filtrare i risultati solo tramite query?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • A
              andrearufo User Attivo • ultima modifica di

              Mh... sinceramente non saprei: stai provando a "buttare" le query direttamente in phpMyAdmin per vedere cosa ti rende?

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • F
                fehu User • ultima modifica di

                Posso copiare la query che uso (con i nomi di tabella e campi un po diversi)

                SELECT COUNT(  DISTINCT (mappa_province.ID_provincia
                ) ) 
                FROM mappa_province
                INNER  JOIN mappa_comuni ON mappa_comuni.ID_provincia = mappa_province.ID_provincia
                LEFT  JOIN locali ON mappa_comuni.ID_comune = locali.ID_comune
                WHERE locali.ID_comune IS  NULL 
                

                avevo scritto male prima, questa query con il count mi da 103 (il totale delle province), senza mi da l'elenco di tutte e 103 le province

                probabilmente sbaglio qualcosa alla base della query

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • F
                  fehu User • ultima modifica di

                  mi sono accorto adesso quanto sono stordito
                  ho l'id della provincia riportato nella tabella del comune, basta fare una join a due

                  SELECT  DISTINCT (mappa_comuni.ID_provincia
                  ), locali.id_comune
                  FROM mappa_comuni
                  LEFT  JOIN locali ON mappa_comuni.ID_comune = locali.ID_comune
                  WHERE locali.ID_comune IS  NULL
                  

                  ma mi restituisce anche questo tutte le province :S

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • Z
                    ziobudda Super User • ultima modifica di

                    Scusa prova a selezionare in una query (A) i comuni che hanno dei locali e poi tramite un NOT IN () trovi i comuni che non hanno locali. Per intenderci (andando un po' alla ceca):

                    SELECT * from provincie p
                    LEFT JOIN comuni c on c.id_comune = p.id_comune and c.id_comune NOT IN (SELECT DISTINCT id_comune from locali)

                    M.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • F
                      fehu User • ultima modifica di

                      Ho provato questa ma mi restituisce sempre tutte le province :S

                      SELECT DISTINCT(ID_provincia) 
                      FROM mappa_comuni c  
                      WHERE c.id_comune NOT IN (SELECT DISTINCT id_comune from locali)
                      
                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • Z
                        ziobudda Super User • ultima modifica di

                        Non è che hai dei comuni senza locali in tutte e 5 le provincie ?

                        M.

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • F
                          fehu User • ultima modifica di

                          ah... mi sento un idiota 😢

                          si, ovviamente le province che contengono comuni con locali registrati contengono anche comuni senza locali, quindi per questo me li restituisce sempre tutti
                          ma allora che devo fare? :mmm:

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • Z
                            ziobudda Super User • ultima modifica di

                            ehmm... capire per bene cosa devi fare....

                            M.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            Caricamento altri post
                            Rispondi
                            • Topic risposta
                            Effettua l'accesso per rispondere
                            • Da Vecchi a Nuovi
                            • Da Nuovi a Vecchi
                            • Più Voti