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

    Inner Join e Left Join!

    Salve ragazzi,

    avrei un problemino per così dire : sto realizzando un db per un e-commerce,e volevo un pò approfondire l'argomento left join per aver restituito tutti i prodotti CHE NON hanno acquistato in X periodo di tempo.

    Per fare questo so che avrei bisogno di un left join e poi filtrare il tutto con un IS NULL per vedere i campi dove non c'è corrispondenza .

    Ma veniamo a noi: ho realizzato queste tre tabelle classiche che indicano la lista dei prodotti,il carrello,e l'acquisto fatto in questo modo[vedi immagine]

    dopo aver fatto questa query

    SELECT prodotti.nome_prodotto, carrello.quantita, acquisto.data_acquisto
    FROM ( subquery.prodotti prodotti
    LEFT JOIN
    subquery.carrello carrello
    ON (prodotti.id_prodotto = carrello.id_prodotto))
    JOIN
    subquery.acquisto acquisto
    ON (acquisto.id_acquisto = carrello.id_acquisto)


    il risultato è identico come se avessi fatto due inner join anzichè un left su prodotti ed il join su carrello-acquisto...e non capisco il perchè!

    Altra cosa: siccome la notazione esplicita dei join mi crea problemi,utilizzo quella esplicita..in tutto questo quando provo a fare i left join coi WHERE ed utilizzo il simbolo *= ,mysql mi restituisce errore..e la cosa mi piace VERAMENTE poco!

    Vi ringrazio per la pazienza anticipatamente XD.

    il mio contatto skype,per le anime pie o per aver passato il file toad è dariovr1
    Immagini allegate Immagini allegate

  2. #2
    io farei la JOIN interna su carrell/acquisti, e non su prodotti/carrello, così (adattala)


    SELECT colonne FROM prodotti LEFT JOIN (carrello JOIN prodotti ON .... AND data_acquisto>tua_data ) t1 ON prodotti.colonna=t1.colonna WHERE t1.colonna IS NULL

    facce sape'

  3. #3

    NON CI SIAMO!

    NON CI SIAMO!:

    codice:
    SELECT prodotti.nome_prodotto, acquisto.data_acquisto, carrello.quantita   FROM    ( prodotti LEFT JOIN carrello ON prodotti.id_prodotto = carrello.id_prodotto )        INNER JOIN           acquisto ON acquisto.id_acquisto = carrello.id_acquisto
    Mi restiuisce un comune inner join,nel senso che mi restituisce gli acquisti FATTI dagli utenti e nient'altro.

    vi passo database + file toad

    database e toad


    grazie raga per la pazienza

  4. #4
    HO PROVATO IN QUESTO MODO MA NEMMENO

    SELECT prodotti.nome_prodotto, acquisto.data_acquisto, carrello.quantita
    FROM ( acquisto INNER JOIN carrello ON acquisto.id_acquisto = carrello.id_acquisto)
    LEFT JOIN prodotti ON prodotti.id_prodotto = carrello.id_prodotto

  5. #5
    beh, l'hai fatto come pare a te.... il mio era diverso

  6. #6
    diverso come scusa? Ho fatto esattamente come mi hai consigliato tu. Ovvero prima INNER JOIN ACQUISTI-CARRELLO e poi LEFT JOIN CARRELLO E PRODOTTI

  7. #7
    allora ti consiglio di rileggere il mio post

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.