Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySQL] Fattore comune con JOIN

    ciao a tutti, vi spiego il mio problema:

    ho dei prodotti in carrello e una tabella con le modalità di spedizione.
    Ogni prodotto a 1 o + modalità di spedizione associate con una tabella relazionale.

    Vorrei che una query mi desse le modalità di spedizione comuni a tutti i prodotti in carrello, oppure nessun risultato nel caso in cui non ci sia una modalità di spedizione comune a tutti.

    esempio:

    TABELLA CARRELLO
    1
    2
    4
    5


    TABELLA CARRELLO_MODSPEDIZIONE
    1 A
    1 B
    2 A
    2 Z
    4 X
    4 A
    5 A
    5 B


    TABELLA MODSPEDIZIONE
    A
    B
    X
    Z


    la query dovrà restituirmi A, in quanto è l'unica riga comune a tutti i prodotti.

    vi ringrazio in ogni caso e vi saluto.
    ciao a tutti
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  2. #2
    Supponendo che:
    -la colonna in carrello si chiama 'id'
    -le colonne in carrello_modspedizione si chiamano 'rif_carrello' e 'rif_modspedizione'
    -la colonna in modspedizione si chiama 'id'

    SELECT c.id FROM carrello a, carrello_modspedizione b, modspedizione c WHERE a.id= b.rif_carrello AND b.rif_modspedizione=c.id;

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    codice:
    SELECT spedizione, count(*) as prodotti
    FROM carrello c join carrello_modspedizione cm on c.prodotto = cm.prodotto
    having prodotti >= x
    dove x sara' il numero di prodotti contenuti nel carrello. Spero che tu lo sappia da prima

    L'ho pensata al volo, non ho modo di provarla quindi non garantisco che funzioni

  4. #4
    Grazie Luca! mi hai aiutato tantissimo!

    in effetti mancava un GROUP BY e un altro JOIN, comunque pubblico la query completa qualora dovesse servire a qualcun'altro.

    ciao e ancora GRAZIE!

    codice:
    SELECT *, COUNT(id_modspedizione) AS numsped
    FROM products_carrello_prodotti cp JOIN products_prodotti_modspedizione pm ON cp.id_prodotto = pm.id_prodotto JOIN products_modspedizione AS m ON pm.id_modspedizione = m.id
    GROUP BY pm.id_modspedizione
    HAVING numsped >= 2
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    In effetti il GROUP BY l'avevo scordato

    Il secondo join però ti serve solo se hai dei dati che devi tirar fuori dalla tabella modspedizione; prima non li avevi mostrati

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