Ich habe zwei Tabellen. Ich möchte die letzte updated_product_id erhalten, wenn sie in der zweiten Tabelle vorhanden ist. Product_id aus der ersten Tabelle. Ich habeWie bekomme ich einen einzelnen Wert von der zweiten Tabelle, wenn Daten noch von der ersten Tabelle existieren?
id | product_id| client_id
1 | 1 | 1
und zweite Tabelle sr_client_products ersten Tabelle sr_client_product_updates
id | product_id| updated_product_id | client_product_id| updated_date
1 | 1 | 2 | 1 | 2016-02-03
2 | 2 | 4 | 1 | 2016-06-07
** Erwartete Ausgabe: einreihige Spalte
updated_product_id = 4 as of updated_date
und wenn die zweite Tabelle sr_client_product_updates keinen Wert hat dann
product_id = 1 from first table
.
** Bis jetzt abfragen
SELECT
if(ProductUpdate.updated_product_id = '',
(select ClientProduct.product_id from sr_client_products ClientProduct where ClientProduct.client_id=1),
ProductUpdate.updated_product_id)
as product_id
from sr_client_product_updates ProductUpdate where ProductUpdate.client_product_id=1 order by ProductUpdate.updated_date DESC limit 1
Das Problem mit der obigen Abfrage ist es zeigt Daten, wenn der Wert in der zweiten Tabelle existiert sonst kehrt leer, und ich denke, das Problem ist mit dem Abfrage auch Ausgang: product_id = 4, wenn Daten vorhanden sind in Tabelle zweiten anderes product_id = 1, wenn der zweite Tisch
Edited Abfrage leer ist:
SELECT
if(count(*) = 0,
(select ClientProduct.product_id from sr_client_products ClientProduct where ClientProduct.client_id=1),
ProductUpdate.updated_product_id)
as product_id
from sr_client_product_updates ProductUpdate
where ProductUpdate.client_product_id=1
order by ProductUpdate.updated_date DESC limit 0,100
Lösung als
SELECT
COALESCE (
sr_client_product_updates.updated_product_id,
sr_client_products.product_id
) AS id
FROM
sr_client_products
LEFT JOIN (
SELECT
MAX(updated_date) AS update_date,
client_product_id
FROM
sr_client_product_updates
GROUP BY
client_product_id
) AS lastUpdate ON lastUpdate.client_product_id = sr_client_products.id
LEFT JOIN sr_client_product_updates ON sr_client_product_updates.client_product_id = lastUpdate.client_product_id
AND sr_client_product_updates.updated_date = lastUpdate.update_date where sr_client_products.id=1
Was für diese Beispieldaten Ihre erwartete Ergebnis ist? – Blank
product_id = 4, wenn Daten in der zweiten Tabelle vorhanden sonst product_id = 1, wenn die zweite Tabelle leer –
braucht, ist eine Klarstellung – JYoThI