SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.06.2008, 10:06:39
Skeadr Skeadr ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 40
Beiträge: 7
Select "zwischenspeichern" und für neue Abfrage benutzen

Hi ihr, :D

bin grad dabei eine für meine Augen unschöne Sache nach Möglichkeit zu
verbessern. Und zwar geht es hierbei um eine Prozedur mit ner UNION Abfrage.

Code:
 --   _tskID ist ein Parameter
    SELECT   
    	1 as viewID
    	, SUM(ResNew) AS vNeu
    	, COUNT(*) as vGesamt
    FROM
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID
    WHERE   
    	ResTskTrID = _tskID
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS )
      AND
  		( ResNew = 1 and ResRelevance = 1 )		-- ungelesen und relevant

    UNION  

    SELECT
    	2 as viewID
    	, SUM(ResNew)
    	, COUNT(*)
    FROM   
    	tblRes
		JOIN tblTskTr ON ResTskTrID = TskTrID
    WHERE   
    	ResTskTrID = _tskID 
	  AND
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND
  		( ResNew = 0 and ResRelevance = 1 )		-- gelesen und relevant
Hier mal 2 Teile davon. Da hängen noch 7 weitere Unions dran.
Was hier auffällt ist Redundanz der FROM Klausel, und genau hier
würd ich gern irgendwie verbessern. Und zwar nachmöglichkeit das From
nicht nur auslagern sondern auch irgendwie dafür sorgen, dass nicht
jedes mal ein JOIN durchgeführt werden muss(falls da noch mehr dazukommt).

Also quasi ein zwischenspeichern des FROM Ergebnisses. Soweit klar?^^

Habs schon mit Select Into versucht, aber keine Erfolge erzielt bisher.

Freue mich auf rege Teilnahme;)
Mit Zitat antworten
  #2  
Alt 17.06.2008, 11:09:07
stb stb ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 40
AW: Select "zwischenspeichern" und für neue Abfrage benutzen

sehe ich das richtig, das
PHP-Code:
ResNew and ResRelevance 
der einzige Unterschied in den querys ist?

Wenn ja, dann kannst du das ganze zu einem Select zuammenfassen.
In der Select klausel kannst du mit IF die Abfrage differenzieren.
PHP-Code:
SELECT
   COUNT
(*),
   
SUM(IF( ResNew and ResRelevance 1ResNew0)) AS vNeu_1,
   
SUM(IF( ResNew and ResRelevance 1ResNew0)) AS vNeu_2,
   ...
   
... 
und das ganze dann mit GROUP sortieren
__________________
Das schwerste ist das Einfachste:

www.rentstock.de

Mit Zitat antworten
  #3  
Alt 17.06.2008, 11:10:46
stb stb ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 40
AW: Select "zwischenspeichern" und für neue Abfrage benutzen

meine natürlich:
mit ORDER BY sortieren
__________________
Das schwerste ist das Einfachste:

www.rentstock.de

Mit Zitat antworten
  #4  
Alt 17.06.2008, 11:24:35
Skeadr Skeadr ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 40
Beiträge: 7
AW: Select "zwischenspeichern" und für neue Abfrage benutzen

Hi, danke schonmal, werd mir dass nochmal im Detail anschaun mit dem Sum und dem IF.

Bin grad nur am überlegen, ob sich das so bewerkstelligen lässt, hier mal die ganze
Abfrage, ist leider nicht nur an der Stelle unterschiedlich:)

Code:
    SELECT
    	1 as viewID
    	, COUNT(*) as vGesamt   
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  		( ResNew = 1 and ResRelevance = 1 )		-- ungelesen und relevant 
      
    UNION  
     
    SELECT   
    	2 as viewID 
    	, COUNT(*) 
    FROM   
    	tblRes 
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID 
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  		( ResNew = 0 and ResRelevance = 1 )		-- gelesen und relevant 
      
    UNION  
     
    SELECT   
    	3 as viewID  
    	, COUNT(*)    
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  	  	( ResFavorite = 1 and ResRelevance = 1 )	-- Favoriten 
      
    UNION  
     
    SELECT   
    	4 as viewID  
    	, COUNT(*)    
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  	  	( fnResStatus(ResID) = 98 and ResRelevance = 1 ) 
      
    UNION  
     
    SELECT   
    	5 as viewID  
    	, COUNT(*)    
    FROM   
    	tblRes
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  	  	( ResValueID = 2 and ResRelevance = 1 )	-- positiv 
      
    UNION  
     
    SELECT   
    	6 as viewID   
    	, COUNT(*)    
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  	  	( ResValueID = 3 and ResRelevance = 1 )	-- neutral 
      
    UNION  
     
    SELECT   
    	7 as viewID  
    	, COUNT(*)   
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND   
  	  	( ResValueID = 4 and ResRelevance = 1 )	-- negativ
      
    UNION  
     
    SELECT   
    	8 as viewID  
    	, COUNT(*)    
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID 
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS ) 
      AND
  	  	( ResRelevance = 0 )					-- alle unrelevanten 
      
    UNION  
     
    SELECT   
    	9 as viewID  
    	, COUNT(*)    
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID
    WHERE   
    	ResTskTrID = _tskID   
	  AND 
	  	( ResLastFoundTS >= TskTrLastStartTS )		-- alle 
 
    UNION  

    SELECT   
    	10 as viewID  
    	, COUNT(*)
    FROM   
    	tblRes   
		JOIN tblTskTr ON ResTskTrID = TskTrID
    WHERE   
    	ResTskTrID = _tskID
	  AND
	  	( ResLastFoundTS >= TskTrLastStartTS )
      AND
  	    ( ResRelevance = 1 ) AND ( ResValueID <= 1 );	-- unbewertete

Und so würde das Ergebniss aussehen

Code:
"viewID","vNeu","vGesamt"
1,1324,1324
2,0,59
3,0,16
4,,0
5,0,1
6,0,5
7,0,6
8,0,7
9,1324,1390
10,1324,1371
Wie vielleicht schon aufgefallen ist, aus der Abfrage ist das Sum weggefallen,
den Wert brauch ich eigentlich gar nicht mehr. (Ältere Abfrage <.<)

Mit deiner Sum Idee, würde ich dann ja quasi so ein Ergebniss bekommen

[code]
"viewID1","viewID2","viewID3""viewID4","viewID5","viewID6""viewID7","v iewID8","viewID9"
100, 123,11345,113,0,0,34
[code]

Aber ich glaube das Count/Sum mit der IF abfrage ist für diesen Fall nicht einsetzbar*überleg*
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
select abfrage WHERE neuling321 MySQLi/PDO/(MySQL) 2 27.04.2008 14:31:33
SELECT Abfrage nur mit gefüllten Werten Skyman MySQLi/PDO/(MySQL) 0 24.10.2007 23:01:50
Select Abfrage? so richtig?! Soeren MySQLi/PDO/(MySQL) 1 11.07.2004 10:52:28
Knifflige SELECT Abfrage alaska MySQLi/PDO/(MySQL) 7 12.08.2003 17:12:13
select feld mit if abfrage? Silencer PHP für Fortgeschrittene und Experten 3 20.11.2002 09:34:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:45:20 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt