php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.01.2012, 13:59  
Neuer Benutzer
 
Registriert seit: 23.09.2011
Beiträge: 9
PHP-Kenntnisse:
Fortgeschritten
MyFrosch befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Von IN(1,5,34,...) jeweils letzten 2 Einträge ausgeben.

Hallo,

ich habe eine Tabelle mit Einträgen.

id | parent_id (standart = NULL) | time | text

Zur Zeit lese ich alle Einträge mit parent_id = NULL aus. Dann nehme ich mir von allen Einträgen die ID. Und tue diese IDs in eine neue Abfrage mit IN(1,5,34,...). Nur das ich hier zu jedem Eintrag alle Untergeordneten Einträge bekomme. Mit GROUP BY bekomme ich nur den Letzten. Ich möchte aber die letzten 2 haben.

Oder gibt es sogar eine Möglichkeit die das alles ein einer Abfrage macht?

Vielen Dank
Philipp

Geändert von MyFrosch (21.01.2012 um 14:04 Uhr).
MyFrosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.01.2012, 14:10  
Erfahrener Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 681
PHP-Kenntnisse:
Anfänger
Harry_X befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
SELECT 
  ID 
FROM
(SELECT ID FROM table WHERE parent_id IS NULLa,
table b
WHERE a
.ID b.ID AND b.parent_id IS NOT NULL
ORDER BY b
.ID DESC
LIMIT 2 
??

Geändert von Harry_X (21.01.2012 um 14:13 Uhr).
Harry_X ist offline   Mit Zitat antworten
Alt 21.01.2012, 14:13  
Neuer Benutzer
 
Registriert seit: 23.09.2011
Beiträge: 9
PHP-Kenntnisse:
Fortgeschritten
MyFrosch befindet sich auf einem aufstrebenden Ast
Standard

Ich hab immer nen bissien doofes Gefühl in nem Select nen Select zu machen und versuche es immer ohne.

Edit: Das Problem ist das diese Variante von allen Antworten insgesamt nur 2 ausgibt... und nicht pro Eintrag.

Geändert von MyFrosch (21.01.2012 um 14:54 Uhr). Grund: Fehler...
MyFrosch ist offline   Mit Zitat antworten
Alt 21.01.2012, 16:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja. Danach hast Du gefragt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 21.01.2012, 16:59  
Neuer Benutzer
 
Registriert seit: 23.09.2011
Beiträge: 9
PHP-Kenntnisse:
Fortgeschritten
MyFrosch befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MyFrosch Beitrag anzeigen
Nur das ich hier zu jedem Eintrag alle Untergeordneten Einträge bekomme. Mit GROUP BY bekomme ich nur den Letzten. Ich möchte aber die letzten 2 haben.
Ich meinte halt zu allen Einträgen die letzten 2.
MyFrosch ist offline   Mit Zitat antworten
Alt 21.01.2012, 17:49  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MyFrosch Beitrag anzeigen
Hallo,

ich habe eine Tabelle mit Einträgen.

id | parent_id (standart = NULL) | time | text

Zur Zeit lese ich alle Einträge mit parent_id = NULL aus. Dann nehme ich mir von allen Einträgen die ID. Und tue diese IDs in eine neue Abfrage mit IN(1,5,34,...). Nur das ich hier zu jedem Eintrag alle Untergeordneten Einträge bekomme. Mit GROUP BY bekomme ich nur den Letzten. Ich möchte aber die letzten 2 haben.

Oder gibt es sogar eine Möglichkeit die das alles ein einer Abfrage macht?

Vielen Dank
Philipp
Mit rekursiven Abfragen kann man jede Menge machen...
Code:
test=*# select * from frosch ;
 id | parent_id | t
----+-----------+---
  1 |           | a
  2 |         1 | b
  3 |         2 | c
  4 |         3 | d
  5 |         4 | e
  6 |           | f
  7 |         6 | g
  8 |         7 | h
  9 |         8 | i
(9 rows)

Time: 0,274 ms
test=*# with recursive r as (select id, parent_id, t, 0::int as c from frosch where parent_id is null and id=1 union all select f.id, f.parent_id, r.t || f.t, c+1 from frosch f inner join r on (f.parent_id=r.id)) select * from r;
 id | parent_id |   t   | c
----+-----------+-------+---
  1 |           | a     | 0
  2 |         1 | ab    | 1
  3 |         2 | abc   | 2
  4 |         3 | abcd  | 3
  5 |         4 | abcde | 4
(5 rows)

test=*# with recursive r as (select id, parent_id, t, 0::int as c from frosch where parent_id is null union all select f.id, f.parent_id, r.t || f.t, c+1 from frosch f inner join r on (f.parent_id=r.id)) select * from r order by id;
 id | parent_id |   t   | c
----+-----------+-------+---
  1 |           | a     | 0
  2 |         1 | ab    | 1
  3 |         2 | abc   | 2
  4 |         3 | abcd  | 3
  5 |         4 | abcde | 4
  6 |           | f     | 0
  7 |         6 | fg    | 1
  8 |         7 | fgh   | 2
  9 |         8 | fghi  | 3
(9 rows)
Die Spalte c ist die Tiefe der Rekursion, wenn Du alle der Tiefe 2 haben willst ist das auch kein Problem.


Andreas
Kann man beliebig weit treiben das Spiel ...


Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 22.01.2012, 15:22  
Neuer Benutzer
 
Registriert seit: 23.09.2011
Beiträge: 9
PHP-Kenntnisse:
Fortgeschritten
MyFrosch befindet sich auf einem aufstrebenden Ast
Standard

Soweit ich weiß geht das leider mit PHP nicht. Und braucht länger...

Ich habs jetzt einfach die Datenbank 2 mal mit Left Join noch eingebunden und dort halt die 2 Kommentare ausgelesen.

lg
philipp
MyFrosch ist offline   Mit Zitat antworten
Alt 22.01.2012, 21:52  
Erfahrener Benutzer
 
Registriert seit: 08.10.2009
Beiträge: 681
PHP-Kenntnisse:
Anfänger
Harry_X befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MyFrosch Beitrag anzeigen
Ich habs jetzt einfach die Datenbank 2 mal mit Left Join noch eingebunden
Du hast die Datenbank per LEFT JOIN eingebunden? Das will ich sehn....
Harry_X ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einträge vergleichen SteiniKeule Datenbanken 2 19.12.2011 00:31
MySQL: Einträge X bis Y anzeigen lassen TorrnexT PHP Einsteiger 4 07.09.2011 11:34
Alle Werte nur einmal ausgeben zoro Datenbanken 1 23.03.2011 12:59
ausgeben von mehreren tabellen mysql SpecialFighter PHP Tipps 2009 9 15.10.2009 18:41
Datenbank Einträge Offline Setzen... noxx Datenbanken 9 25.01.2009 12:32
Bild erzeugen lassen und in Tabelle ausgeben maximus PHP Tipps 2008 7 11.11.2008 20:53
verschachtelte Rubriken ausgeben / alle anzeigen prinzli PHP Tipps 2008 3 25.02.2008 22:37
Anzahl der Einträge einer MySQL-Tabelle Datenbanken 8 19.06.2006 19:14
[Erledigt] Datensätze blockweise nacheinander ausgeben?? Datenbanken 6 13.03.2006 14:22
String zerlegen und jeweils als Bild ausgeben PHP Tipps 2005 6 08.02.2005 15:19
Nur bestimmte DB einträge ausgeben PHP Tipps 2004 14 05.08.2004 12:47
spalte auswählen und alle einträge ausgeben Datenbanken 6 02.08.2004 13:38
Hielfe: WIE neue DB Einträge zählen& farbig markieren??? Datenbanken 2 20.07.2004 12:16
Einträge in Etappen ausgeben plus Navigation PHP Tipps 2004 1 19.06.2004 14:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php einträge nacheinander aus der datenbank anzeigen, php letzten einträge ausgeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum