php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 03-09-2007, 11:30
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard count() wert summieren mit sum()

Halli Hallo,

hab da so ein Problemchen was ich eigentlich schon länger mit PHP umgangen hab, aber jetzt will ich das ganze doch schön in MySQL lösen is halt einfach eleganter und ich weiss auch das es mit MySQL möglich ist nur ich bin anscheinend einfach noch zu unerfahren.

Folgendes:
ich möchte einen count() wert mit sum() summieren

hier mein SQL:
PHP-Code:
mysql_query(SELECT t1.id_searchrequest,t1.request,
COUNT(t1.request) as requestsumme,
SUM(
SELECT COUNT(t2.request) as requestsumme
FROM s_searchrequest 
as t2
WHERE t2
.ip_adresse != '117.6.38.221'
AND t2.request t1.request
GROUP BY t2
.request
ORDER BY requestsumme DESC
LIMIT 0
,100
) as requestsumme_gesamt,

SUM(t1.searchresult) as searchresults
FROM s_searchrequest 
as t1
WHERE t1
.ip_adresse != '117.6.38.221'
GROUP BY t1.request
ORDER BY requestsumme DESC
LIMIT 0
,100); 
Ergebnis zum Beispiel:
request requestsumme requestsumme_gesamt
schuhe 15 100
hose 15 100
shirt 60 100
pulli 10 100

request -> sind suchbegriffe nach denen auch gruppiert wird und die gruppierten Zeilen werden als requestsumme ausgegeben.
Hintergrund ist einfach eine Statistik einer Suchauswertung also
die TOP 100 Suchbegriffe zb ich will jetzt halt einfach prozentual immer darstellen wie oft der Suchbegriff gesucht wurde und dazu brauche ich die summer aller requestsumme
klar könnte da den PHP compiler bemühen, aber ich will mich ja weiterentwickeln und mysql noch besser kennen lernen . Hoffe ihr könnt mir da helfen!

Grüße
Tom


ich weiss das folgendes nicht geht´:

- sum(count()) funzt ned hab ich nachgelesen(MySQL) und getestet
- subquey SUM(
SELECT COUNT(t2.request) as requestsumme
FROM s_searchrequest as t2
WHERE t2.ip_adresse != '217.91.38.221'
AND t2.request = t1.request
GROUP BY t2.request
ORDER BY requestsumme DESC
LIMIT 0,100
) as requestsumme_gesamt, --> evtl einfach falsch?! gibt aber eigentlich die richtigen Spalten Werte er kann Sie einfach ned summieren...
- und dann hab ich das noch gefunden: user-variables
---> @x:=COUNT(t1.request) as requestsumme,
SUM(@x) as requestsumme_gesamt, () funzt ja anscheinend nicht mit Statements die GROUP BY beinhalten

Also ich hab schon ziemlich viel im Internet gestöbbert und ich denke ich weiss auch das man das ganze nur subquerys zu lösen sein wird.

Geändert von tomtherock (03-09-2007 um 13:01 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 03-09-2007, 15:46
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

OffTopic:
Zitat:
klar könnte da den PHP compiler bemühen
glaube ich kaum


SUM() summiert die Werte über mehrere Spalten, nicht aber von einzelnen Abfragen. Ich empfehle dir, für jeden Artikel den du summieren willst eine subquery zu starten, und die gelieferten Ergebnisse mittels altmodischem Plus zu addieren.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #3 (permalink)  
Alt 03-09-2007, 16:00
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie würde das dann ausschauen?

Hab den jetzt nen Subquery verwendet so weit nur wie jetzt addieren ohne SUM?!

PHP-Code:

mysql_query
(SELECT t1.id_searchrequest,t1.request,
COUNT(t1.request) as requestsumme,
SUM(t1.searchresult) as searchresults,

(
SELECT COUNT(t2.request) as requestsum
FROM s_searchrequest 
as t2
WHERE t2
.ip_adresse != '213.22.33.221'
AND t2.request t1.request
GROUP BY t2
.request
ORDER BY requestsum DESC
LIMIT 0
,100
) as requestsumme_gesamt

FROM s_searchrequest 
as t1

WHERE t1
.ip_adresse != '213.22.33.221'
GROUP BY t1.request
ORDER BY requestsumme DESC
LIMIT 0
,100); 
Eregbis:
id_searchrequest request--------- requestsumme searchresults requestsumme_gesamt
518___________|_nike+___________|__4_____|_____116_____|____4
83____________|_New Balance 766_|__4_____|______20_____|____4
108___________|_kswiss__________|__3_____|_____105_____|____3
106___________|_gt-2120_________|__2_____|_____371_____|____2
80____________|_New Balance 857__|__2_____|_____10______|___2
101___________|_nike porsche_____|__2______|_____0______|____2
95____________|_nike advantage___|__2______|____720_____|___2
104___________|_gt 2120_________|__2______|_____0______|___2

Geändert von tomtherock (03-09-2007 um 16:22 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 03-09-2007, 16:01
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

z.B. (t1.searchresult + t2.searchresult) as searchresults
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #5 (permalink)  
Alt 03-09-2007, 16:13
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mhhh des würde so ned klappen weil searchresults nur die suchtreffer des Suchwortes(request) zurück geben....(mysql_num_rows() bei der Logg funktion)

COUNT( t1.request ) AS requestsumme will ich ja summieren...

kann man in SQL eigentlich wie in PHP einen Wert immer so aufsummieren:

$summe += $summe;

? Also in SQL

(COUNT( t1.request )+=COUNT( t1.request )) AS requestsumme

Geändert von tomtherock (03-09-2007 um 16:27 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 03-09-2007, 17:08
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich auch grad getestet kommt zwar kein Fehler aber voll die Misst Ergebnisse bei der _gesamt raus:

PHP-Code:

SELECT t1
.id_searchrequest,t1.request,
COUNT(t1.request) as requestsumme,
SUM(t1.searchresult) as searchresults,

@
x:=(
SELECT COUNT(t2.request) as requestsum
FROM s_searchrequest 
as t2
WHERE t2
.ip_adresse != '217.91.38.221'
AND t2.request t1.request
) as x,
SUM(@x) as requestsumme_gesamt

FROM s_searchrequest 
as t1

WHERE t1
.ip_adresse != '217.91.38.221'
GROUP BY t1.request
ORDER BY requestsumme DESC
LIMIT 0
,100 
ODER

PHP-Code:
SELECT t1.id_searchrequest,t1.request,
COUNT(t1.request) as requestsumme,
SUM(t1.searchresult) as searchresults,

SUM((
SELECT COUNT(t2.request) as requestsum
FROM s_searchrequest 
as t2
WHERE t2
.ip_adresse != '217.91.38.221'
AND t2.request t1.request
)) as requestsumme_gesamt

FROM s_searchrequest 
as t1

WHERE t1
.ip_adresse != '217.91.38.221'
GROUP BY t1.request
ORDER BY requestsumme DESC
LIMIT 0
,100 
SELECT COUNT(t2.request) as requestsum
FROM s_searchrequest as t2
WHERE t2.ip_adresse != '217.91.38.221'
AND t2.request = 'kswiss'

Ergibt zb genau 3 was stimmt und dann muss er doch den Subquerysummieren können macht er aber ned sonder macht wegen dem GROUP BY nehme ich an 3*3 weil dahinter im haupt query ja 3 rows mit count gezählt werden?!?!?!
Mit Zitat antworten
  #7 (permalink)  
Alt 03-09-2007, 17:34
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Jetzt bin ich total verwirrt.

(COUNT( t1.request ) + COUNT( t1.request ))

ist doch das gleiche wie

(COUNT( t1.request ) * 2)
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #8 (permalink)  
Alt 03-09-2007, 18:08
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Jetzt bin ich total verwirrt.

(COUNT( t1.request ) + COUNT( t1.request ))

ist doch das gleiche wie

(COUNT( t1.request ) * 2)
ja LOGO in PHP würde ich das was ich will ja easy so erreichen:

PHP-Code:
WHILE($row=mysql_fetch_object($res_requests))
{
$request $row->requestsumme;


$request_gesamtsumme += $request;


Nur ich benötige ja schon bei der ersten Schleife die Gesamtsumme aller Zeilen bzw der Gesamtsumme der Request die gezählt werden also:
"Nike" -> 3
"kswiss" -> 7
"schuhe" -> 3
usw....
ergibt gesamt: 13

Hab nur echt kein Plein wie ich das erreichen kann es muss doch gehen diesen Wert zu summieren und das schon in der SQL Abfrage

Mit Zitat antworten
  #9 (permalink)  
Alt 03-09-2007, 19:55
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Wieso werkelst du denn immernoch mit deinem SUM() rum? Normale arithmetische operationen (Plus) sollten doch kein Problem sein?

Versuch dich doch mal ein wenig mit

Code:
(anzahlVonSubQuery1 + anzahlVonSubQuery2) AS gesamtAnzahl
viel Erfolg.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51 Uhr.