Hilfe bei Abfrage

peace_Julian

Neuer Benutzer
Beiträge
3
Ich hab da eine Abfrage wo ich nicht weiter komme.

Es geht um inner selects bzw. unterabfragen:

SELECT `offer` , mergedcategories.category, offers_feed.payout as publisher_payout, CAST( ROUND( SUM( conversions ) ) AS SIGNED ) AS conversions,CAST(ROUND(SUM(revenue)) AS SIGNED) as revenue, TRIM(LEFT( statsyear.offer, 3 )) AS Land, country.name, offers_feed.countrytarget, offers_feed.offerid,

( SELECT round(avg(offers_feed.payout), 2) FROM offers_feed as inner_offers_feed
WHERE TRIM(LEFT( inner_offers_feed.name, 2 )) like TRIM(LEFT( statsyear.offer, 2 ))
group by TRIM(LEFT( inner_offers_feed.name, 2 )) ) as Test_Durchschnit
t

FROM statsyear

INNER JOIN country ON LEFT( statsyear.offer, 3 ) = country.iso
INNER JOIN offers_feed ON statsyear.offerid = offers_feed.offerid
LEFT OUTER JOIN mergedcategories ON statsyear.offerid=mergedcategories.id

WHERE conversions <>0
AND YEAR =2014
AND revenue <>0
GROUP BY offers_feed.offerid
ORDER BY `revenue` DESC

Diese Unterabfrage liefert ein falsches Ergebnis. ich möchte den avg von payout gruppiert nach left(name) und die Bedingung soll von left(name) auf die überabfrage left(offer) gehen. Die where klausel ist eigentlich korrekt, ich hab mir auch schon beide Werte ausgeben lassen, dass stimmt soweit.
Trotzdem stimmt der avg(payout) nicht. Wenn ich diese unterabfrage in einer eigenständigen abfrage anzeigen lasse sieht das so aus: SELECT ROUND( AVG( offers_feed.payout ) , 2 ) AS durchschnitt_payout, TRIM( LEFT( name, 2 ) ) AS Land
FROM offers_feed
GROUP BY TRIM( LEFT( name, 2 ))
 
Werbung:
Ok hab ich mir gedacht.. Es geht eigentlich nur um den oberen Teil:

SELECT B.Feld1, B.Feld2, (SELECT avg(offers_feed.payout) FROM Tabelle1 as A
WHERE TRIM(LEFT( A.name, 2 )) = TRIM(LEFT( B.offer, 2 )) //hier möchte ich von der Unter abfrage eine Beziehung zum Aktuellen Datensatz der überabfrage verweisen
group by TRIM(LEFT( A.name, 2 )) ) as Test_Durchschnit
t

FROM B

inner / outer / left joins...

group by ...

Das Ergebnis von Testdurchschnitt ist falsch, mache ich hier was falsch?
 
Noch einmal: reduziere das bitte soweit, daß man es verstehen kann. "im prinzip möchte ich eine ganz einfache Abfrage als Feld mit bezug auf den datensatz in eine Abfrage zusammenführen" verstehe ich nicht.
 
Werbung:
Du sagst dein Durschnittswert stimmt wenn du die Unterabfrage einzeln ausführst (in dem du LIKE trim(left(statsyear.offer,2)) durch einen statischen Wert ersetzt) aber nicht mehr wenn deine Gesamtabfrage läuft?
 
Zurück
Oben