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 25-04-2004, 22:05
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Exclamation [SQL allgemein] Hilfe Count mit sum verknüpfen

Hallo,
brauche dringend Hilfe. Das ganze Wochende versucht aber leider ohne erfolg. Also folgendes:

Ich habe folgende Tabellen: AngebotStart ,AngebotEnde in meiner Datenbank.

So jetzt will ich zwischen 2 daten alle Datensätze innerhalb dieses Zeitraums erkennen und mit Count() zählen lassen.Dabei sollen sie noch Gruppiert werden durch AngebotStart
Dann will ich die Summe von dem count für jeden tag bilden! Aber das klappt nicht!
Hier meine Abfrage:

select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number, FROM data
where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
>='2002-08-21')) AND AngebotStart <= '2002-08-25'
Group by AngebotStart order by AngebotStart;

soweit funktioniert es auch. Wie könnte ich jetzt dabei noch die Summe von Count(AngebotStart) bilden und damit feststellen an welchem Datum wieviel angebote wirklich existieren.

Also wenn das Datum in AngebotEnde vorbei ist sollte er es auch wieder abziehen.
Zum besseren Verständnis

AngebotStart 2004-01-10; AngebotEnde 2004-01-20 Count=3
AngebotStart 2004-01-11; Angebotende 2004-01-18 Count=5

So, also vom 2004-01-11 bis 2004-01-18 wäre die Summe dann 8.
Aber den Tag vorher und danach wäre die Summe nur 3.

BITTE BITTE UM HILFE ICH DREh NOCH TOTAL durch...




Vielen Dank im Voraus

Marauder
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 26-04-2004, 00:30
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

du willst die Summe aus Datensätzen mit coun oder?

Schon mal:

Code:
select AngebotEnde,AngebotStart,AngebotStart,sum(COUNT(AngebotStart)) as number, FROM data 
where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
>='2002-08-21')) AND AngebotStart <= '2002-08-25'
Group by AngebotStart order by AngebotStart;
versucht?
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.
Mit Zitat antworten
  #3 (permalink)  
Alt 26-04-2004, 14:35
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein das geht leider nicht!

Sagt invalid use of group function.


gruss
Mit Zitat antworten
  #4 (permalink)  
Alt 26-04-2004, 14:49
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wie sieht deine Abfrage jetzt aus?
Mit Zitat antworten
  #5 (permalink)  
Alt 26-04-2004, 15:52
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

irgendwie muss man das mit eine subquerie lösen, raff nur nicht ganz wie das geht...

also meine Abfrage sieht folgendermaßen aus:

select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number, FROM data
where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
>='2002-08-21')) AND AngebotStart <= '2002-08-25'
Group by AngebotStart order by AngebotStart;

das war sie eigentlich jetzt will ich noch die summe bilden. müsste irgendwie so gehen..

select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number FROM data, select SUM(number) as Summe
where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
>='2002-08-21')) AND AngebotStart <= '2002-08-25'
Group by AngebotStart order by AngebotStart;

kann mir noch jemand helfen?

danke!!!11
Mit Zitat antworten
  #6 (permalink)  
Alt 26-04-2004, 16:08
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.278
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Versuch doch erstmal den Sinn hinter Deiner Abfrage zu erklären ... den scheint es für mich hier erstmal nicht zu geben ... !

Payne_of_Death's Vorschlag ( sum(COUNT(AngebotStart)) ) würde ... wenn man darüber nachdenkt und sich vor Augen führt was GROUP BY macht nichts anderes ergeben als COUNT(AngebotStart) ...
__________________
carpe noctem

Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!

Geändert von goth (26-04-2004 um 16:10 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 26-04-2004, 16:10
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ok ich will erstmal mit COUNT(*) die Anzahl der berechnen. Also wieviele Datensätze an einem datum enstanden sind.
deshalb mach ich COUNT(*) verbunden mit Group by AngebotStart.

so jetzt will ich aber noch die summe von den enstandenen COUNT berechnen.

Mit Zitat antworten
  #8 (permalink)  
Alt 26-04-2004, 16:12
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.278
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ... entweder im Script summieren ... oder mit 'nem neuen Statement ein extra COUNT(*) abfragen ...

Sowohl COUNT() als auch SUM() sind Aggregat-Funktionen die auf die via GROUP BY aggregierten Datensätze wirken ...
__________________
carpe noctem

Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
Mit Zitat antworten
  #9 (permalink)  
Alt 26-04-2004, 16:14
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie würde meine Abfrage dann aussehen, also ich habe ja dann ein feld number was aus count() erstellt wird....
und dann will ich pro datensatz noch ein feld summe (mit sum()) erstellt welches mir die counts aufaddiert...
Mit Zitat antworten
  #10 (permalink)  
Alt 26-04-2004, 16:15
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

nachdem du ja SQL allgemein als betreff hast: such dir ne datenbank, die CUBE bzw. ROLLUP unterstützt

eventuell geht's auch mit nem UNION, wobei das imho der sprichwörtliche krückstock wäre, der von hinten durch die brust ins auge usw. ...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #11 (permalink)  
Alt 26-04-2004, 18:06
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von goth
Sowohl COUNT() als auch SUM() sind Aggregat-Funktionen die auf die via GROUP BY aggregierten Datensätze wirken ...
hmm hab group by übersehen oho...
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.
Mit Zitat antworten
  #12 (permalink)  
Alt 26-04-2004, 18:14
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie??? das versteh ich nicht????
Mit Zitat antworten
  #13 (permalink)  
Alt 26-04-2004, 18:18
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dachte es müsste dann irgendwie so aussehen aber auch das funktioniert nicht!!!!!!



select sum(number) from (COUNT(*) as number,
AngebotEnde, AngebotStart FROM data) as data
where (BLUBB)
Group by AngebotStart order by AngebotEnde;
Mit Zitat antworten
  #14 (permalink)  
Alt 26-04-2004, 22:05
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab ein anderen ansatz, könnte ich nicht für jedes datum in einem bereich sagen wir 2004-10-05 bis 2004-10-20 alle tage abklappern lassen auch wenn sie nicht in meiner datenbank vorhanden sind und mir zurückgeben lassen wieviel einträge an jedem tag waren?

gibts in sql nicht sowas wie for each day tuhe das...
???
HELP!!1
Mit Zitat antworten
  #15 (permalink)  
Alt 26-04-2004, 23:08
Marauder
 Newbie
Links : Onlinestatus : Marauder ist offline
Registriert seit: Apr 2004
Beiträge: 15
Marauder ist zur Zeit noch ein unbeschriebenes Blatt
Standard [SQL allgemein] Datumintervall abklappern lassen?

Hallo Leute,

kannich nicht für jedes datum in einem bereich sagen wir 2004-10-05 bis 2004-10-20 alle tage abklappern lassen auch wenn sie nicht in meiner datenbank vorhanden sind und mir zurückgeben lassen wieviel einträge an jedem tag waren?

Also meine Datenbank sieht folgendermaßen aus:

Tabellen: AngebotStart(Datum), AngebotEnde(Datum), Artikelnummer

wie würde ich das jetzt machen..? es soll auch 0 zurückkommen wenn an einem tag kein aktives angebot, also wenn das datum nicht zwischen AngebotStart und AngebotEnde lag.


Vielen Dank

Hoffe auf eure Unterstützung



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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:44 Uhr.