2016-08-04 12 views
1

ich eine MySQL-Tabelle mit den folgenden Feldern habenSelbst der Transaktionstabelle vergleichen Werte finden

Transaction_id, toy_id, toy_name, Quantity_sold, Date_sold.

Die Frage, die ich beantworten möchte, lautet: Welche Spielzeuge wurden heute verkauft, die gestern nicht verkauft wurden. Ich verstehe, dass dies sehr vage ist, also fühlen Sie bitte frei, irgendwelche Annahmen zu machen, die gemacht werden müssen, um zu helfen, es einfach zu schreiben, und danke!

+3

So Unterauswahl verwenden, was Sie diese selbst versuchen getan haben und zu lösen? Wir helfen gerne, aber nur für diejenigen, die es selbst versucht haben. Wir sind nicht hier, um deine Arbeit für dich zu tun. –

+0

haben Sie eine Liste von Spielzeugen für Schecks, die verkauft werden und welche nicht? – scaisEdge

+0

Marc B, Entschuldigung dafür, dass ich meinen Code nicht aufgesetzt habe, habe ich absichtlich gemacht, um die Antworten nicht in eine bestimmte Richtung zu lenken. Ich verstehe Ihren Standpunkt und möchte die Arbeit eines anderen nicht ausnutzen. Vielen Dank für Ihre Zeit. –

Antwort

0

Ein Verfahren verwendet Aggregation mit einer having Klausel:

select toy_id 
from t 
where date_sold >= date_sub(curdate(), interval 1 day) 
group by toy_id 
having date(min(date_sold)) = curdate(); 

Die where Klausel schränkt die Daten an den letzten zwei Tagen. Wenn das Mindestdatum heute ist, dann wurde gestern kein Spielzeug verkauft.

0

Sie könnten den Operator not exists verwenden, um die Spielzeuge zu finden, die gestern nicht verkauft wurden. Z.B .:

SELECT toy_id, toy_name 
FROM transactions today 
WHERE date_sold = CURRENT_DATE() 
     AND NOT EXISTS (SELECT * 
         FROM transactions yesterday 
         WHERE today.toy_id = yesterday.toy_id AND 
           yesterday.date_sold = 
           today.date_solde - INTERVAL 1 DAY); 
0

Sie könnten einen nicht in und

Select Transaction_id, toy_id, toy_name, Quantity_sold, Date_sold 
    from my_table 
    where to_id not in (
    select T toy_id 
    from my_table 
    where Date_sold = date(date_sub(now(), INTERVAL 1 day)) 
);