2015-11-23 13 views
5

mam 2 po select w MySQL:join 2 mysql wybierz na podstawie pola tekstowego

1-te wybrać:

(SELECT DISTINCT `Online_playerdatabase_v2`.`Player`, 
Online_playerdatabase_v2.First_Deposit_Date As FirstDep, 
TRUNCATE(Online_playerdatabase_v2.Balance,2) as Balance 

FROM Online_playerdatabase_v2 
WHERE `Online_playerdatabase_v2`.`Player`<>'Player' 
ORDER BY `Online_playerdatabase_v2`.`Balance` DESC; 

2d wybrać:

SELECT DISTINCT(Online_customer_activity_v2.Customers) as Player, 
max(Online_customer_activity_v2.Date) as LastAction 
FROM Online_customer_activity_v2 
WHERE `Online_customer_activity_v2`.`Total_Bets`>0 
Group by Online_customer_activity_v2.Customers 

Output Wybierz 1

Player  FirstDep Balance 
Ray   2014-10-19 9100.00 
Ramzi  2014-11-02 9.61 
tareq  2014-11-06 805.00 
STAN  2014-10-17 7.50 
Bill  2014-03-25 68.40 
karam  2014-11-16 676.50 
Abdul  2014-11-13 650.00 
Renaud  2014-03-12 507.00 
John  2014-11-22 500.00 

Wyjście wybierz 2

Player LastAction 
John 2015-11-13 
Bill 2014-12-14 
Renaud 2015-03-14 
Abdul 2015-11-16 
Ray  2015-11-22 
STAN 2015-10-29 
Ramzi 2015-11-10 
Tarek 2015-05-10 
karam 2014-12-10 
Abdul 2015-02-10 

pożądany wynik, łączyć zarówno Select, który dodaje następujące obliczenia: active days (FirstDep-LastAction) i Days_last_Visit (CurrentDate - Last Action)

zestawione w poniższej tabeli:

Player FirstDep Balance LastAction Active_days Days_last_Visit 
Ray  2014-10-19 9100.00 2015-11-22 399   1 
Ramzi 2014-11-02 9.61 2015-11-10 373   13 
tareq 2014-11-06 805.00 2015-05-10 185   197 
STAN 2014-10-17 7.50 2015-10-29 377   25 
Bill 2014-03-25 68.40 2014-12-14 264   344 
karam 2014-11-16 676.50 2014-12-10 24   348 
Abdul 2014-11-13 650.00 2015-02-10 89   286 
Renaud 2014-03-12 507.00 2015-03-14 367   254 
John 2014-11-22 500.00 2015-11-13 356   10 

Twoja pomoc jest bardzo cenna! Dzięki

Odpowiedz

1

Poniższe zapytanie powinno dać pożądany wynik. Dodam, że dołączyłem do dwóch tabel z pośrednich zapytań powyżej, używając pola Player. Nie jest to bardzo solidny sposób na dołączenie, ponieważ nazwa może nie być unikalna wśród wszystkich graczy w tabeli. Lepszym sposobem na połączenie byłoby użycie jakiegoś unikalnego identyfikatora.

SELECT t1.Player, t1.FirstDep, t1.Balance, t2.LastAction, 
    DATEDIFF(t2.LastAction, t1.FirstDep) AS Active_days, 
    DATEDIFF(NOW(), t2.LastAction) AS Days_last_Visit 
FROM 
(
    SELECT DISTINCT `Online_playerdatabase_v2`.`Player`, 
     Online_playerdatabase_v2.First_Deposit_Date AS FirstDep, 
     TRUNCATE(Online_playerdatabase_v2.Balance,2) AS Balance 
    FROM Online_playerdatabase_v2 
    WHERE `Online_playerdatabase_v2`.`Player` <> 'Player' 
) t1 
INNER JOIN 
(
    SELECT DISTINCT(Online_customer_activity_v2.Customers) AS Player, 
     MAX(Online_customer_activity_v2.Date) AS LastAction 
    FROM Online_customer_activity_v2 
    WHERE `Online_customer_activity_v2`.`Total_Bets` > 0 
    GROUP BY Online_customer_activity_v2.Customers 
) t2 
ON t1.`Player` = t2.`Player` 
0

Musisz dołączyć do 2 selekcji jako podkwerendy w trzecim wybierz przy użyciu pola gracza. Pola Active_days i Days_last_Visit można obliczyć za pomocą DateDiff() function.

SELECT * 
,DateDiff(t2.LastAction,t1.FirstDep) AS Active_days 
,DateDiff(CURDATE(), t2.LastAction) AS Days_last_Visit 
FROM 
(SELECT DISTINCT `Online_playerdatabase_v2`.`Player`, 
Online_playerdatabase_v2.First_Deposit_Date As FirstDep, 
TRUNCATE(Online_playerdatabase_v2.Balance,2) as Balance 
FROM Online_playerdatabase_v2 
WHERE `Online_playerdatabase_v2`.`Player`<>'Player' 
ORDER BY `Online_playerdatabase_v2`.`Balance` DESC) t1 
LEFT JOIN 
(SELECT DISTINCT(Online_customer_activity_v2.Customers) as Player, 
max(Online_customer_activity_v2.Date) as LastAction 
FROM Online_customer_activity_v2 
WHERE `Online_customer_activity_v2`.`Total_Bets`>0 
Group by Online_customer_activity_v2.Customers) t2 
ON t1.Player=t2.Player 

Musisz jednak rozważyć, jak dołączyć do 2 zestawów danych. Użyłem lewostronnego połączenia, ponieważ stół graczy prawdopodobnie pomieści wszystkich graczy, ale możesz wybrać wewnętrzne sprzężenie lub symulację pełnego sprzężenia zewnętrznego w zależności od wymagań i danych.

Powiązane problemy