İki tablom var: items
ve items_meta
. Bir sorguda, bazı tablolarla eşleşen öğeler tablosundan tüm öğeleri seçmek istiyorum.Başka bir sorguda kullanılmak üzere SELECT QUERY alt sütunlarını (id) alın
SELECT id,name,price description FROM items
WHERE {some conditions are true};
Ben de ilk sorguda öğelerin id
maç items_meta tüm satırları seçmek istiyorum. Bu, doğrudan ilk sorguyla ilgili olmayan başka bir amaç için kullanılacaktır.
SELECT meta_name, meta_value,COUNT(*) FROM items_meta
WHERE item_id IN ({the ids from the previous query})
GROUP BY meta_name, meta_value;
Benim şu anki uygulama PHP kullanarak ilk sonuçlar arasında döngü ve ikinci sorguda kullanılacak id
bir liste oluşturmak.
foreach ($items as $item){
$items_id[] = $item["id"];
}
$IDs = implode(",", $items_id);
Bundan daha iyi bir sql yaklaşımı olması gerektiğini düşünüyorum.
Bu çözüm aslında ilk başta düşünce budur. Tek sorun, ilk sorgu aslında sonuç üretmek için birkaç tablo JOINS olan karmaşık bir sorgu basitleştirilmiş bir formudur. Bu birleşimleri ikinci sorguda tekrarlamak, onu daha karmaşık ve işlemci yoğunlaştırır. – elSama
Ayrıca, ilk sorguyu kullanarak geçici bir tablo oluşturmayı düşündüm, sonra da yaklaşımınızı kullanın. Bu fikri reddettiğim nedeni, fazladan karmaşıklık getirmesiydi. Verileri geçici tabloya eklemek zorunda kaldım, sonra tüm sonuçlarımı ilk çıkışım olarak tekrar seçtim. Verileri yerleştirmenin ve geri göndermenin bir yolu varsa memnun olurum. – elSama