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 12-04-2007, 17:57
daimonion
 Newbie
Links : Onlinestatus : daimonion ist offline
Registriert seit: May 2005
Beiträge: 6
daimonion ist zur Zeit noch ein unbeschriebenes Blatt
Standard MySQL befehl verstehen und umschreiben

Hallo

Ich hoffe hier finden sich eine MySQL'er die sich vielleicht mal mein Problem anschauen können.

Mal als grobe Richtung: Es geht um eine MySQL abfrage innerhalb eines PHP-Skriptest, welches sich in dem Orion Board befindet.

Dort gibt es einen Teil der folgendermaßen aussieht:

Code:
 if (check_mysql_version()) 
            { 
               $sql = "SELECT u.user_id, u.username, u.user_posts, Count(p.post_id) AS new_counter 
                  FROM " . USERS_TABLE . " u 
                     INNER JOIN " . POSTS_TABLE . " p ON u.user_id = p.poster_id 
                  WHERE u.user_id <> " . ANONYMOUS . " 
                  GROUP BY u.user_id, u.username, u.user_posts"; 
            } 
            else 
            { 
               $sql = "SELECT u.user_id, u.username, u.user_posts, Count(p.post_id) AS new_counter 
                  FROM " . USERS_TABLE . " u, " . 
                     POSTS_TABLE . " p 
                  WHERE u.user_id = p.poster_id 
                     AND u.user_id <> " . ANONYMOUS . " 
                  GROUP BY u.user_id, u.username, u.user_posts"; 
            }
Für was ist dieser Code gut?
Kurz gesagt mit diesem Code werden die Beitragszähler neu berechnet.

Weiter unten im Code werden die Werte dann, so glaub ich nur wieder an die entsprechenden Stellen in der Datenbank geschrieben.

Bei meinem Problem handelt es sich um folgendes.
Diese Abfrage soll nur Beiträge zählen die in Foren geschrieben sind, welche nicht in einem Array aufgeführt sind.

d.h. Ich habe ein Array, welches ich vor der Abfrage generiere und so aussehen könnte:

Code:
spc_id = [3,4];
Alle Foren die nicht in diesem Array sind können für die Zählung herangezogen werden, aber nicht die die in diesem Array stehen.

Gibt es eine Möglichkeit den SQL Befehl derart anzupassen das dieses Problem gelöst wird?

Danke schon mal im vorraus für eure Hilfe

Grüße
Daimonion
Mit Zitat antworten
  #2 (permalink)  
Alt 12-04-2007, 18:04
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: MySQL befehl verstehen und umschreiben

Zitat:
Original geschrieben von daimonion

Gibt es eine Möglichkeit den SQL Befehl derart anzupassen das dieses Problem gelöst wird?
und wie immer bekommt man von mir bei solchen Fragen immer ein einfaches:

Ja
Mit Zitat antworten
  #3 (permalink)  
Alt 12-04-2007, 19:37
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Wie wäre es mit "AND NOT IN" an der richtigen stelle.. Damit lässt sich bei Google & Co ne menge finden.
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #4 (permalink)  
Alt 13-04-2007, 15:37
daimonion
 Newbie
Links : Onlinestatus : daimonion ist offline
Registriert seit: May 2005
Beiträge: 6
daimonion ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@asp2php

Wieso denn nur ein ja und nicht eventuell ne einfach Erklärung wo man da ansetzen könnte?

@hhcm

Danke für den Tipp.

Jetzt brauch ich erst mal nur noch begreifen was das SQL statement genau macht um dann herauszufinden wo ich eventuell die Bedingung reinsetzen muß.

Ich bin noch nicht wirklich fit mit diesen inneren Abfragen.

Code:
INNER JOIN " . POSTS_TABLE . " p ON u.user_id = p.poster_id
Ich denke mal hier werden alle Beiträge gezählt die die userid geschrieben hat, oder?

Ergo könnte dort ja auch das "AND NOT IN" hinein?!

Danke für eure Tipps

Grüße
Daimonion
Mit Zitat antworten
  #5 (permalink)  
Alt 13-04-2007, 17:57
schmalle
  Ich Root, Du nix
Links : Onlinestatus : schmalle ist offline
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
schmalle ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das: u.user_id <> " . ANONYMOUS . "

ersetzen durch: u.user_id NOT IN( ".implode(',', $array).")

Denk dran an der passende Stelle darauf zu achten, dass in Deinem Array auch was drin ist. Sonst gibbet lustige Fehler ;-)
__________________
h.a.n.d.
Schmalle

http://impressed.by
http://blog.schmalenberger.it



Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
... nur ohne :-)
Mit Zitat antworten
  #6 (permalink)  
Alt 06-07-2007, 18:06
daimonion
 Newbie
Links : Onlinestatus : daimonion ist offline
Registriert seit: May 2005
Beiträge: 6
daimonion ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, nach langem Warten möcht ich hier nochmal antworten.

@schmalle.

Danke für den Tipp, werd ich mal so ausprobieren und berichten. Hoffe das dauert nicht wieder so lange..


Edit:

So, habe es geschafft... Hier nochmal der Vollständigkeit halber der geänderte Code

Code:
//no post count mod
				//count only posts which are not in these forum_ids
				$npc_id = $board_config['no_post_count_forum_id'];
				$npc_id = explode(",",$npc_id);
				$npc_str="";
				foreach ($npc_id as $str) {
					$npc_str .= " AND NOT p.forum_id = ". $str ." "; 
				}
				 
				
				// Updating new pm counter
				if (check_mysql_version())
				{
					
					$sql = "SELECT u.user_id, u.username, u.user_posts, Count(p.post_id) AS new_counter
						FROM " . USERS_TABLE . " u
							INNER JOIN " . POSTS_TABLE . " p ON u.user_id = p.poster_id
						WHERE u.user_id <> " . ANONYMOUS . $npc_str ."
						GROUP BY u.user_id, u.username, u.user_posts";
				}
				else
				{
					
					$sql = "SELECT u.user_id, u.username, u.user_posts, Count(p.post_id) AS new_counter
						FROM " . USERS_TABLE . " u, " .
							POSTS_TABLE . " p
						WHERE u.user_id = p.poster_id
							AND u.user_id <> " . ANONYMOUS . $npc_str ."
							
						GROUP BY u.user_id, u.username, u.user_posts";
				}

Geändert von daimonion (09-07-2007 um 12:36 Uhr)
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 15:00 Uhr.