Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [MySql] Cercare prodotti che non hanno ricevuto offerta

    Buongiorno.
    Ho due tabelle, tb_prodotti e tb_offerte.

    Nella prima, c'è l'elenco di tutti i prodotti, identificati con un codice, nella seconda vanno a finire tutte le offerte fatte per ogni singolo prodotto identificato con lo stesso codice,

    Il mio intento è quello di capire quali sono i prodotti che non hanno ricevuto offerta.

    Mi aiutate per favore?
    Grazie. .

  2. #2
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Buongiorno.
    Ho due tabelle, tb_prodotti e tb_offerte.

    Nella prima, c'è l'elenco di tutti i prodotti, identificati con un codice, nella seconda vanno a finire tutte le offerte fatte per ogni singolo prodotto identificato con lo stesso codice,

    Il mio intento è quello di capire quali sono i prodotti che non hanno ricevuto offerta.

    Mi aiutate per favore?
    Grazie. .
    Prova a scrivere 2 righe di codice o perlomeno scrivi un pseudo codice e poi vediamo di aiutarti.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  3. #3
    Questa query, a scadenza mi visualizza soltanto i prodotti con lo stesso codice presenti in entrambe le tabelle
    [code]
    SELECT a.*, b.*
    FROM tb_prodotti as a
    INNER JOIN tb_offerte as b ON a.codiceProdotto=b.codiceProdotto
    WHERE (now() BETWEEN a.dtScadenza AND a.dtElimina)
    [code]

  4. #4
    forse questa potrebbe andare bene?
    codice:
    SELECT * FROM tb_prodotti as a WHERE codiceProdotto NOT IN (SELECT codiceProdotto FROM tb_offerte)
    AND (now() BETWEEN a.dtScadenza AND a.dtElimina)
    Ultima modifica di ANTAGONIA; 18-01-2024 a 13:19

  5. #5
    mettile in left join, where il codice nella tabella che NON ha items è null

  6. #6
    Quote Originariamente inviata da optime Visualizza il messaggio
    mettile in left join, where il codice nella tabella che NON ha items è null
    Non ho capito come fare
    Ultima modifica di ANTAGONIA; 18-01-2024 a 15:27

  7. #7
    select campi from prodotti left join offerte on prodotto.codiceprodotto=offerte.codiceprodotto where offerte.codiceprodotto is null

    questo perché i prodotti li hai tutti, le offerte qualcuna; in questo modo evidenzi le offerte vuote

    da sistemare ovviamente

  8. #8

  9. #9
    Buongiorno, la tua query funziona allo stesso modo di questa :
    codice:
    SELECT * FROM tb_prodotti as a WHERE codiceProdotto NOT IN (SELECT codiceProdotto FROM tb_offerte)
    AND (now() BETWEEN a.dtScadenza AND a.dtElimina)
    posso sapere la differenza tra la tua e la mia?Cosi ho il quadro più chiaro?
    Grazie mille per l'aiuto

  10. #10
    Ciao, le due query funzionano in modo diverso, anche se poi arrivano a un risultato simile se non uguale (il che conferma che non esiste UN modo di fare le cose).

    La tua estrae prima tutti i codici prodotto dalle offerte (a proposito, sarebbe più efficiente una SELECT DISTINCT) e poi estrae tutti i prodotti che NON solo in quella lista -- non so cosa faccia la WHERE sulle date ma direi che è fuori dal discorso generale che stiamo facendo.

    La mia invece sfrutta la JOIN, mettendo in LEFT JOIN le due tabelle, di solito a sinistra quella che ha più item (o tutti gli item) e a destra quella che ha meno item (o gli item puntuali); a destra ti ritroverai quindi con una serie di colonne NULL, perché la JOIN per quegli item ha trovato solo le corrispondenze di sinistra; elencando quelle a sinistra che hanno NULL a destra avrai il risultato che ti serve.

    Quale delle due è più efficace? Varia da caso a caso (e dalle esperienze personali). A me piace di più quella con la JOIN (soprattutto quando le cose si fanno più complicate), ma non è detto che sia la più efficace in tutti gli scenari.


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.