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 21-05-2009, 19:58
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard Vorgänger/Nachfolger Problem

Hey,

ich habe eine Table welche u.A. zwei Spalten besitzt Vorgänger = pnr, Nachfolger vnr

Aus dieser Tabelle möchte ich nun alle Leute selektieren die direkt oder indirekt die Untergebenen vom Mueller sind

Mit meinem bisherigen Ansatz bekomme ich leider nur die direkten Untergebenen und eine Idee wie ich die indirekten bekomme hab ich im Moment auch nicht...

select p1.name from pers p1, pers p2, pers p3 WHERE p1.vnr= p2.pnr AND p1.vnr=p3.pnr AND p3.name ='Mueller'


Vielen Vielen Dank für eure Hilfe
Mit Zitat antworten
  #2 (permalink)  
Alt 21-05-2009, 20:53
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn du alle haben willst, mußt du rekursiv durchlaufen. So wie du es atm hast, geht nur 2 Ebene tief.
Mit Zitat antworten
  #3 (permalink)  
Alt 21-05-2009, 21:17
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von asp2php Beitrag anzeigen
Wenn du alle haben willst, mußt du rekursiv durchlaufen. So wie du es atm hast, geht nur 2 Ebene tief.
Hi, könntest du mir freundlicherweise hier etwas weiterhelfen?

Hab eben das ganze erweitert aber jetzt bekomme ich nur noch die letzte ebene
Mit Zitat antworten
  #4 (permalink)  
Alt 21-05-2009, 21:32
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ist einfach, suche im Forum nach rekursiv oder Rekursion. Im Prinzip läuft es so ab: (Pseudo-Code)
PHP-Code:
function GetChild($person)
{
       
Schleife über alle Kinder
       
{
             if (
$child->hasChild)
                   
GetChild($child)
             else
                   
Kinder ausgeben
        
}

Mit Zitat antworten
  #5 (permalink)  
Alt 21-05-2009, 21:35
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

sorry, mir gehts nur um den dbms skill zu verbessern....

d.h. keine php unterstützung.....

hmm oracle hat hierfür was in petto würde aber gerne das ganze mal für 3 ebenen haben und das bekomm ich aktuell gerade nicht hin....

müsste aber irgendwie mit union vermutlich zu schaffen sein
Mit Zitat antworten
  #6 (permalink)  
Alt 21-05-2009, 21:41
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm ... ich glaube ich hab' was übersehen. Deine Datenstruktur ist doch NestedSet, oder? Such mal im Forum nach NestedSet, da kannst du die Nachfahren alle auf einmal auslesen.
Mit Zitat antworten
  #7 (permalink)  
Alt 21-05-2009, 21:53
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von asp2php Beitrag anzeigen
Hm ... ich glaube ich hab' was übersehen. Deine Datenstruktur ist doch NestedSet, oder? Such mal im Forum nach NestedSet, da kannst du die Nachfahren alle auf einmal auslesen.
Ne das ist kein nested sets.....
das sieht so aus

Beispiel:
1 | 2
2 | 3
3 | 4
4 | 3
5 | 4
6 | 4


In Oracle wäre es
Code:
select name 
from pers 
WHERE pnr IN
    (select pnr
    from pers
    connect by vnr = prior pnr
    start with vnr = 
      (select pnr
      from pers
      where name='Mueller'));
allerdings ist das kein SQL Standard will das ohne das hier hinbekommen
Mit Zitat antworten
  #8 (permalink)  
Alt 21-05-2009, 22:12
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

3|4
4|3

Zirkelbezug? Was ist denn das für 'ne Datenstruktur? Ohne den Zirkelbezug ist es stink normale Vater->Sohn Prinzip und mit Rekursion schnell zu erledigen, aber nicht mit MySQL; hier musst du PHP zur Hilfe nehmen.
Mit Zitat antworten
  #9 (permalink)  
Alt 21-05-2009, 22:22
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von asp2php Beitrag anzeigen
3|4
4|3

Zirkelbezug? Was ist denn das für 'ne Datenstruktur? Ohne den Zirkelbezug ist es stink normale Vater->Sohn Prinzip und mit Rekursion schnell zu erledigen, aber nicht mit MySQL; hier musst du PHP zur Hilfe nehmen.
Sry das Beispiel hab ich mir aus den Finger gesaugt....Es ist nur ein Vater->Sohn Prinzip und soweit ich weiss kann man das mit einer fixen Ebene in jedem DBMS bauen......Es ist nicht dynamisch das ist klar

Oracle kann mit solchen Datenstrukturen mit ner beliebigen Ebene wie oben auch umgehen......

Mir geht es aber um fest definierte Ebenen und dafür braucht man kein PHP
Mit Zitat antworten
  #10 (permalink)  
Alt 21-05-2009, 22:30
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wasfür DBMS hast du?
Mit Zitat antworten
  #11 (permalink)  
Alt 21-05-2009, 22:34
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von asp2php Beitrag anzeigen
Wasfür DBMS hast du?
im moment oracle

so hab jetzt ne lösung erarbeitet aber ob das einfacher geht nunja

Code:
select p1.name from pers p1, pers p2, pers p3 WHERE p1.vnr= p2.pnr AND p1.vnr=p3.pnr AND p3.name ='Mueller'
union
select p1.name from pers p1, pers p2, pers p3, pers p4 WHERE p1.vnr= p2.pnr AND p2.vnr=p3.pnr AND p3.pnr=p4.pnr AND p4.name='Mueller'
Mit Zitat antworten
  #12 (permalink)  
Alt 21-05-2009, 22:39
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 verstehe nicht, warum du Oracle hast und keine Oracle-spezifische P/L SQL verwenden? Ist dein System nicht genug ausgelastet? Ansonstens könntest du mit 4-fachen LEFT JOIN auch zum Ziel kommen; z.Z. machst du mit CROSS JOIN, dass ist zu großzügig, aber wenn du dein DB-Server an die Leistungsgrenze treiben willst ist natürlich OK.
Mit Zitat antworten
  #13 (permalink)  
Alt 21-05-2009, 22:44
Chango
 Registrierter Benutzer
Links : Onlinestatus : Chango ist offline
Registriert seit: May 2009
Beiträge: 7
Chango befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von asp2php Beitrag anzeigen
Ich verstehe nicht, warum du Oracle hast und keine Oracle-spezifische P/L SQL verwenden? Ist dein System nicht genug ausgelastet? Ansonstens könntest du mit 4-fachen LEFT JOIN auch zum Ziel kommen; z.Z. machst du mit CROSS JOIN, dass ist zu großzügig, aber wenn du dein DB-Server an die Leistungsgrenze treiben willst ist natürlich OK.
in Oracle läuft das sogar recht flott durch.....

wird vermutlich ganz doll optimiert, könnte ka nachschlagen aber me ist gerade kaputt
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
nächstes & vorgänger Element anzeiegen hdmnf SQL / Datenbanken 7 27-08-2007 20:45
[SQL allgemein] Vorgänger -und Nachfolgerdatensatz ermitteln?! goodlike SQL / Datenbanken 7 02-06-2007 19:42
suche Nachfolger für administrative Tätigkeiten frank7l7 Jobgesuche 0 04-01-2004 23:00
Nachfolger von 'XXL Links Pro' gesucht? dagato Apps und PHP Script Gesuche 3 24-09-2003 11:46
Gerücht : Win XP Nachfolger soll inkompatibel zu seinen Vorgängern werden ! JoelH News / Kostenloses 1 05-07-2002 01:42

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 08:56 Uhr.