Tüm paketlerimi farklı satıcılardan almaya çalıştığım bu sorguya sahibim. Yapmak istediğim: her paketle, paketin ait olduğu satıcıya ait ortalama dereceyi yerleştirmek istiyorum. Yukarıdaki sorgu ileAVG işlevi kullanılıyorsa, SQL sorgusu sonucu tek bir sonuca kadar azalır
SELECT
p.id as package_id,
p.title as package_title,
p.path as package_image,
p.packageQuantity as package_quantity,
p.price as package_price,
AVG(r.star_rating) as star_rating
FROM
package as p
INNER JOIN vendor as v ON v.id = p.vendor_id
INNER JOIN review as r ON r.vendor = v.id
Sonuç:
Array
(
[0] => Array
(
[package_id] => 3
[package_title] => Simple
[package_image] => 1f496761e41e3b23d014f5511d591664c94e6390.jpeg
[package_quantity] => 120 Minutes
[package_price] => 1236
[star_rating] => 3.3333333333333335
)
)
Sorun AVG çıkarmak zaman alıyorum tüm sonuçları ile karşılaştırıldığında yukarıdaki sorgu ile sadece tek bir sonuç alıyorum olmasıdır sütunu. AVG olmadan sorgunun
SELECT
p.id as package_id,
p.title as package_title,
p.path as package_image,
p.packageQuantity as package_quantity,
p.price as package_price
FROM
package as p
INNER JOIN vendor as v ON v.id = p.vendor_id
Sonuç:
Array
(
[0] => Array
(
[package_id] => 1
[package_title] => Normal
[package_image] => 38fbe34ff595a282a171c6058f40f676bde91665.jpeg
[package_quantity] => 120 Photos
[package_price] => 1200
)
[1] => Array
(
[package_id] => 2
[package_title] => Medium Package(Ui)
[package_image] => 5c9a34123d7e18237641355c59e91b10570e0fed.jpeg
[package_quantity] => 250 Photos
[package_price] => 2400
)
[2] => Array
(
[package_id] => 3
[package_title] => Simple
[package_image] => 1f496761e41e3b23d014f5511d591664c94e6390.jpeg
[package_quantity] => 120 Minutes
[package_price] => 1236
)
[3] => Array
(
[package_id] => 4
[package_title] => Better Package
[package_image] => d0ab8bee318da6b3f1d515835cadcc8669afc0f2.jpeg
[package_quantity] => 250 Minutes
[package_price] => 2366
)
[4] => Array
(
[package_id] => 5
[package_title] => Advance Package
[package_image] => 532b67366f327a17a4cb3e5b194d52950dd58a9b.jpeg
[package_quantity] => 600 Minutes
[package_price] => 5698
)
[5] => Array
(
[package_id] => 6
[package_title] => Excellent Package
[package_image] => 6b7272f9ae03229e41bde2e5933e42b4db061c70.jpeg
[package_quantity] => 1000 Minutes
[package_price] => 8966
)
)
Ben bile olsa, bütün paketleri alıp bunlardan katları olacak satıcının ortalama derecesi olduğunu göstermeye gerekiyor tekrarlayan. Bir GROUP BY
sütun tanımlamak gerekir böylece
SELECT
p.id as package_id,
p.title as package_title,
p.path as package_image,
p.packageQuantity as package_quantity,
p.price as package_price,
(SELECT AVG(r.star_rating)
FROM vendor v INNER JOIN
review r
ON r.vendor = v.id
WHERE v.id = p.vendor_id
) as star_rating
FROM package p;
, bu basit aşağıdakileri dikkate İki adımlı eylem: 1. Henüz yapmadıysanız, sorunu daha kolay çoğaltabilmemiz için uygun DDL'leri (ve/veya bir sqlfiddle) sağlayın. 2. Henüz yapmadıysanız, 1. adımda sağlanan bilgilere karşılık gelen istenen bir sonuç kümesi belirtin. – Strawberry