Mailinglisten-Archive |
> article_id | category_id | weight
> -----------+-------------+-------
> 1 | 1 | 9
> 1 | 7 | 5
> 1 | 9 | 7
> 1 | 11 | 6
> 2 | 2 | 4
> 2 | 6 | 9
> .........etc....................
>
> Nun brauche ich die Summe aller Gewichte ("weight"-Feld), die in
> bestimmten Kategorien für einen Artikel ("article_id") vorhanden sind;
>
> Wenn die gesuchten Kategorien also 1,6,9,11,15 und 16 sind sollte bei
> obiger Tabelle als Ergebnis idealerweise 22 herauskommen.
>
> Die Summe macht mir via SQL Probleme, aber die könnte ich in PHP
> bilden. Also habe ich auf folgendem Weg versucht, für EINEN BESTIMMTEN
> Artikel alle "weights" zu ermitteln:
>
> SELECT weight
> FROM correlations
> WHERE article_id="1"
> AND ( category_id="1"
> OR category_id="6"
> OR category_id="9"
> OR category_id="11"
> OR category_id="15"
> OR category_id="16")
>
> (Einrückung nur zwecks übersichtlichkeit).
>
> Im Browser (PHP-API) bekomme ich nur eine Fehlermeldung ("Warning:
> Invalid argument supplied for foreach() in path\prioritylist.php on
> line xyz").
>
> Derselbe Query (im Script ausgegeben und dann via Copy and Paste)
> führt in mySQL-Front zu dem ebenso profanen wie falschen Ergebnis "9",
> also offensichtlich nur dem "ersten" Wert aus der Tabelle.
>
> Was mache ich falsch? Ich bin für jeden Tipp dankbar, das Ganze ist
> ein Studienprojekt und der Abgabetermin drückt ;)))
keine ahnung was du falsch amchst, sehe hier keinen fehler
aber um deine summer rauszubekommen würde ich das so machen:
SELECT SUM(`weight`)
FROM `correlations`
WHERE `article_id` = "1"
AND `category_id` IN ("1", "6", "9", "11", "15", "16")
--
Sebastian Mendel
www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive