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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #31 (permalink)  
Alt 22-11-2004, 17:54
xManUx
 Registrierter Benutzer
Links : Onlinestatus : xManUx ist offline
Registriert seit: Feb 2004
Beiträge: 833
xManUx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
SELECT
                    c.did,
                    c.cid,
                    c.title
                    e.did,
                    e.aid,
                    e.bid
FROM
                     c1 c
INNER JOIN     
                     e1 e
              ON 
                     c.did = e.did
WHERE
                     c.cid > e.aid
     AND
                    c.cid >e.bid
vielleicht? ich weiß nicht was du überhaupt vorhast mit $var.. aber maybe bietet sich auch IF () im SQL-Statement an...
__________________

Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
sondern mit den Augen das Manual zu lesen.

Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #32 (permalink)  
Alt 22-11-2004, 20:45
kari_w
 Guest
kari_w
Beiträge: n/a
Standard Abfrage in einer Funktion vereinfachen?

Hallo

ich weiss nicht ob dies möglich ist ich hoffe schon.

Ich habe mal folgende einfache Funktion geschrieben:

PHP-Code:
function DateLister() {
 global 
$cache$catbit;
 if(!isset(
$cache)) {
  
$result mysql_query("SELECT catid, parentid, title FROM DatesCats");
  while(
$row mysql_fetch_array($result)) {
   
$cache[$row['parentid']][$row['catid']] = $row;
  }
 }
 if(
is_array($cache) && count($cache)) {
  
reset($cache);
  
$childlist_count_temp=0;
  while(list(
$key1$val1) = each($cache[$catbit])) {
   while(list(
$key2$personenbit) = each($val1)) {
    
$personen_result mysql_query("SELECT d.dateid, d.catid, d.title, 
d.createtime, e.* FROM Dates d LEFT JOIN VisitParty e ON 
(d.dateid=e.dateid) WHERE d.catid='$personenbit[catid]' AND 
((e.lastvisit IS NULL OR (d.createtime>e.lastvisit)))"
);
    
$newperson=0;
    while (
$personen_row mysql_fetch_array($personen_result)) {
     
$newperson++;
    }
    if(
$newperson==0$b="";
    else 
$b="Neue Person";
    
$DateAusgabe.=$personenbit['title'].$b
   
}
  }
 }
 return 
$DateAusgabe;

Gehen wir hier aus, das die Abfrage "SELECT catid, parentid, title FROM DatesCats" 250 Resultate Liefern würde.
Dann würde es in der WHILE bei $personen_result .... 250 weitere "hoffentlich" unnötige Abfragen machen.
e.lastvisit IS NULL ist drin, dass die Tabelle VisitParty nicht zu jedem eintrag ein Wert haben muss.

Wie kann ich nun die zweite Abfrage einsparen, so dass ich auf das selbe ergebnis komme. Aus der Zweiten Abfrage benötige ich eigentlich keine Werte. Sie dient nur zur "Zählung".

Ich habe dies mal in PHP Gepostet da es sich ja etwas um PHP und MySQL Handelt. Hoffe dies war richtig.

Gruss

kari_w
Mit Zitat antworten
  #33 (permalink)  
Alt 22-11-2004, 20:47
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ach nee, das ist ja das gleiche in grün, überlege doch mal, anstatt dauernd nachfragen
EDIT:
und dafür mußt du nicht einen neuen Thread öffen. **zusammenführen**

Geändert von asp2php (22-11-2004 um 20:49 Uhr)
Mit Zitat antworten
  #34 (permalink)  
Alt 22-11-2004, 20:50
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Hallo

Dachte ich auch erst das es das selbe in Grün ist.
Aber egal wie ich es gemacht habe ich weiss nicht wie ich das so verarbeiten kann das ich nachher auch trotzdem die WErte $b habe.

Das scheint was komplett anderes zu sein als die anderen Probleme von vorhin. Da ich ja noch die Bedingungen für $b habe.

Gruss

kari_w

Seid bitte nicht böse auf mich. Bin schon froh das es ein Forum gibt wo auch Frauen mal ne Antwort bekommen. Aber ich komme hier wirklich nicht weiter.
Mit Zitat antworten
  #35 (permalink)  
Alt 23-11-2004, 10:42
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Moin allerseits.

So ich habe nun gestern feierabend gemacht und bin nun wieder seit 2 Stunden dran. Ich habe die zuweite Abfrage Probiert in die erste zu kopieren und alles. Habe hier nochmals sämtliche beiträge in diesem Thread durchgelesen. Jedoch ist dies wirklich etwas anderes durch die Abfrage "if($newperson==0)". Ich komme einfach auf keinen Grünen Zweig mehr wie dies funktionieren könnte.

Mir ist zwar unterdessen bekannt wie ich aus zwei Abfragen eine mache etc. Jedoch nicht wie ich eine Komplette Abfrage wo es um einen Zahlenwert geht in eine andere Abfrage bekomme und dies nachher doch per PHP auszuwerten.

Ich benötige ja nur die Werte von
PHP-Code:
$result mysql_query("SELECT catid, parentid, title FROM DatesCats"); 
Von der anderen Abfrage benötige ich eigentlich nur gibt es da einträge oder nicht zu einem Wert.

gruss

kari_w
Mit Zitat antworten
  #36 (permalink)  
Alt 23-11-2004, 11:16
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

**seufz** mach mal so:
PHP-Code:
SELECT d.dateidd.catidd.titled.createtime
       
c.catidc.parentidc.titlee.* 
FROM (Dates d INNER JOIN DatesCats c ON d.catid=c.catid
     
LEFT JOIN VisitParty e ON d.dateid=e.dateid 
WHERE e
.lastvisit IS NULL OR d.createtime>e.lastvisit 
wie du d.catid/c.catid bzw. d.title/c.title ansprichst, mußt du selbst heraus finden.

btw: es gibt keine Hilfe mehr in der Richtung! Wenn du weitere derartige Abfrage hast, mach selbst
Mit Zitat antworten
  #37 (permalink)  
Alt 23-11-2004, 11:34
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Hallo

Wie schon gesagt ich habe diese Abfragen bereits zusammen gelegt wie ich auch oben geschrieben habe.
Ich hatte ja shcon die Tipps mit INNER JOIN etc.

Mir geht es um dass:
if($newperson==0) $b="";


Wie finde ich dies nun heraus.

Gruss

kari_w
Mit Zitat antworten
  #38 (permalink)  
Alt 23-11-2004, 11:40
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von kari_w

Mir geht es um dass:
if($newperson==0) $b="";
d.h. im Klartext: die Abfrage liefert nichts, also was wäre die Lösung?

Die Lösung ist:
Mit Zitat antworten
  #39 (permalink)  
Alt 23-11-2004, 12:25
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Hm entweder reden wir aneinander vorbei oder ich weiss auch nicht.

Die Abfrage MUSS etwas liefern.
Und zwar dies:
$result = mysql_query("SELECT catid, parentid, title FROM DatesCats");

So müsste ich keine bedingung oder so haben.
Ich muss nur nachher dies rausfinden:
PHP-Code:
$personen_result mysql_query("SELECT d.dateid, d.catid, d.title, 
d.createtime, e.* FROM Dates d LEFT JOIN VisitParty e ON 
(d.dateid=e.dateid) WHERE d.catid='$personenbit[catid]' AND 
((e.lastvisit IS NULL OR (d.createtime>e.lastvisit)))"
);
    
$newperson=0;
    while (
$personen_row mysql_fetch_array($personen_result)) {
     
$newperson++;
    }
    if(
$newperson==0$b="";
    else 
$b="Neue Person"
Also dieses möchte ich dann herausfinden und wenn möglich eben in einer Abfrage. Jedoch brauche ich nur die daten die mri die abfrage jetzt schon liefert.

gruss

kari_w
Mit Zitat antworten
  #40 (permalink)  
Alt 23-11-2004, 12:44
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich habe so verstanden:

du wilst die beiden Abfragen:

"SELECT catid, parentid, title FROM DatesCats" und
"SELECT d.dateid, d.catid, d.title,
d.createtime, e.* FROM Dates d LEFT JOIN VisitParty e ON
(d.dateid=e.dateid) WHERE d.catid='$personenbit[catid]' AND
((e.lastvisit IS NULL OR (d.createtime>e.lastvisit)))"

miteinander kombinieren, wobei die Bedingung:
d.catid='$personenbit[catid]' die Bedingung d.catid=DatesCats.catid
entspricht.

Ist das so?
Mit Zitat antworten
  #41 (permalink)  
Alt 23-11-2004, 13:20
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Hmm Nicht ganz. Ich weiss nicht wie ich dies besser erklären kann. Ich Probiere es mal:

Die wichtigste Hauptabfrage ist diese:
PHP-Code:
$result mysql_query("SELECT catid, parentid, title FROM DatesCats"); 
Diese Abfrage soll genau so ausgeführt werden. Also nicht mit WHERE oder so beeinflusst werden. Ich brauche genau diese Werte aus dieser Abfrage.

Ich verarbeite dies weiter in ter WHILE schleife.

PHP-Code:
$personen_result mysql_query("SELECT d.dateid, d.catid, d.title, 
d.createtime, e.* FROM Dates d LEFT JOIN VisitParty e ON 
(d.dateid=e.dateid) WHERE d.catid='$personenbit[catid]' AND 
((e.lastvisit IS NULL OR (d.createtime>e.lastvisit)))"
);
    
$newperson=0;
    while (
$personen_row mysql_fetch_array($personen_result)) {
     
$newperson++;
    }
    if(
$newperson==0$b="";
    else 
$b="Neue Person"
Wie du siehst, ist dies im WHILE drin. Eine Abfrage die halt zu enorm vielen Abfragen dann führen würde, je mehr Kategorien sind. Und ich würde gerne die Abfrage zusammen legen, so dass sich aber die erste Abfrage nicht in der Funktion unterschiedet, und möchte dann dies:
PHP-Code:
if($newperson==0$b="";
    else 
$b="Neue Person"
trotzdem Abfragen können.

Also das er mir dann bei den kategorien "Neue Person" anhängt wo die Bedingung passt von der zweiten Abfrage.

Das Zusammenlegen wäre so ja nicht das Problem. Das habt ihr mir ja super erklärt. Jedoch das zusamenlegen, so dass ich trotzdem alle Werte bez den kompletten durchgang habe wie bisher auch, und dass ich nachher trotzdem abfragen kann ob es bei DIESER Kategorie wo er grad am verarbeiten ist einträge gibt oder nicht.

Ich hoffe dies ist etwas genauer beschrieben was ich meine.
Wenn nicht sag doch bitte welches nicht ganz klar ist, dann probiere ich dies nochmals etwas genauer zu beschreiben.

Gruss

kari_w
Mit Zitat antworten
  #42 (permalink)  
Alt 23-11-2004, 13:30
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

und warum kannst du nicht von DatesCats LEFT JOINen auf Dates?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #43 (permalink)  
Alt 23-11-2004, 13:35
kari_w
 Guest
kari_w
Beiträge: n/a
Standard

Wenn ich dies so mache:

PHP-Code:
SELECT d.dateidd.catidd.titled.createtime
       
c.catidc.parentidc.titlee.* 
FROM (Dates d INNER JOIN DatesCats c ON d.catid=c.catid
     
LEFT JOIN VisitParty e ON d.dateid=e.dateid 
WHERE e
.lastvisit IS NULL OR d.createtime>e.lastvisit 
dann habe ich die auslese wo diese bedingung stimmt. Das ist korrekt. Jedoch geht er mir dann auch nur diese einträge aus DatesCats aus. Ich benötige aber alle einträge aus DatesCats und muss nachher einfach irgendwie abfragen können ob diese Kategorie aus DatesCats irgendwelche einträge mit dieser bedingung haben. Also die die ich eigentlich hier bisher einzel habe:

PHP-Code:
SELECT d.dateidd.catidd.title
d.createtimee.* FROM Dates d LEFT JOIN VisitParty e ON 
(d.dateid=e.dateidWHERE d.catid='$personenbit[catid]' AND 
((
e.lastvisit IS NULL OR (d.createtime>e.lastvisit))) 
Gruss

kari_w
Mit Zitat antworten
  #44 (permalink)  
Alt 23-11-2004, 13:38
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

Zitat:
Original geschrieben von mrhappiness
von DatesCats LEFT JOINen auf Dates
und jetzt schau dir an, was du gemacht hast
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #45 (permalink)  
Alt 23-11-2004, 13:40
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von kari_w
Wenn ich dies so mache:

PHP-Code:
SELECT d.dateidd.catidd.titled.createtime
       
c.catidc.parentidc.titlee.* 
FROM (Dates d INNER JOIN DatesCats c ON d.catid=c.catid
     
LEFT JOIN VisitParty e ON d.dateid=e.dateid 
WHERE e
.lastvisit IS NULL OR d.createtime>e.lastvisit 
dann habe ich die auslese wo diese bedingung stimmt. Das ist korrekt. Jedoch geht er mir dann auch nur diese einträge aus DatesCats aus. Ich benötige aber alle einträge aus DatesCats und muss nachher einfach irgendwie abfragen können ob diese Kategorie aus DatesCats irgendwelche einträge mit dieser bedingung haben.
und wer hindert dich daran, aus INNER, LEFT bzw RIGHT zu machen

warum denkst du nicht ein bisschen nach?
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

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.