Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

illi

Jungspund

Dabei seit: 17.09.2003

Beiträge: 18

 

1 Zum Seitenanfang

Freitag, 9. April 2004, 09:33

Join

guten tag

mein problem:
ich habe eine tabelle
[id, data, ...]
und möchte mit einem join sowohl das vorhergehende als auch das nachfolgende element auslesen...
primärschlüssel ist id, wobei die werte nicht geordnet sind.
was ich bis jetzt versucht habe:

SELECT a.id, max( b.id ), min( c.id )
FROM 006_f a, 006_f b, 006_f c
WHERE b.id < a.id AND c.id > a.id
AND a.id =4
GROUP BY a.id

problem: natürlich gibt das garnichts aus, sobald b.id < a.id nicht möglich ist - sprich: beim ersten und letzten element funktionierts nicht

wenn mir wer helfen kann: icq#95351984, ich kann auch entsprechende tabellendefinitionen (.sql) zur verfügung stellen.

lg dominik
 

MartyMcFly

Foren Gott

Dabei seit: 04.06.2003

Beiträge: 3 137

 

2 Zum Seitenanfang

Freitag, 9. April 2004, 13:55

RE: Join

Hallo,

auch wenn es mehr Ressourcen braucht, aber ich vermute, Du wirst drei Abfragen daraus machen müssen. Erst ID suchen und dann "max(ID) where ID< [Ausgangs-ID]" und dann noch ein "min(ID) where ID> [Ausgangs-ID]"

Wenn dann kein Rückgabewert kommt, hast Du die beiden anderen und kannst daraus schliessen, dass es der grösste bzw. kleinste Wert ist.

By the way: Nette Abfrage, die Du da gebastelt hast. Auf so eine Idee bin ich noch nie gekommen, eine Tabelle für einen solchen Zweck auf sich selber zu joinen.

Gruss
Marty
 

illi

Jungspund

Dabei seit: 17.09.2003

Beiträge: 18

 

3 Zum Seitenanfang

Freitag, 9. April 2004, 20:06

RE: Join

die lösung mit mehreren queries ist hier im einsatz:
http://www.php-tutorial.at/phpref.php?k=Array-Funktionen&i=2
(source: http://www.php-tutorial.at/source.php?file=phpref.php )

was ist ressourcenfreundlicher... min() oder order by ... limit 1 ?
bzw wie kann ich das testen? einfach in endlosschleife die queries ausführen, mitzählen und nach einer halben stunde das ergebnis auslesen? *ka*

mal schaun... danke erstmal

dominik
 

Alfons_G

Routinier

Dabei seit: 26.04.2003

Beiträge: 486

 

4 Zum Seitenanfang

Sonntag, 11. April 2004, 12:29

MIN() müsste ressourcensparender sein. Da durchsucht MySQL die Tabelle auf den kleinsten Wert. Geht natürlich besonders schnell, wenn die Spalte indiziert ist. ORDER BYmit folgendem LIMIT 1 liest die DB zuerst ALLE Datensätze in einen Puffer ein, sortiert sie dann und verwirft das Ergebnis bis auf den ersten Datensatz.

Alfons
 

Ähnliche Themen