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 24-08-2009, 11:44
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard Sub-LIMIT

Ich habe nun auch mal (wieder) ein Problem ...

Es gibt eine SQL-Tabelle (A) und eine Referenz-Tabelle (B).

Tabelle A
- id
- fk_b_id
- text
- datumzeit

Tabelle B
- id
- name

Tabelle B wird als FK genutzt.

Es sollen aus Tabelle A nur die letzten 5 Datensätze (basierend auf "datumzeit") pro FK ausgelesen werden.

Aktuell nutze ich diese Query.
Code:
SELECT
	a.`id`,
	b.`id`,
	a.`text`
	a.`datumzeit`
FROM
	`tabelle a` a
		LEFT JOIN `tabelle b` b
		ON (
			b.`id` = a.`fk_b_id`
		)
Ein DATE_SUB bringt nichts, wenn zu einer FK_ID längere Zeit keine Daten enthalten sind.

Ich habe da grad irgendwie keine Idee.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #2 (permalink)  
Alt 24-08-2009, 11:53
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

GROUP BY, ORDER und LIMIT ... sollte doch kein Problem sein oder hab ich dein Anliegen falsch verstanden?
Mit Zitat antworten
  #3 (permalink)  
Alt 24-08-2009, 12:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Das hast du vermutlich ...

Das LIMIT bezieht sich auf die ganze Query und nicht auf die externen Referenzen. Pro externer Referenz sollen maximal x Werte gezeigt werden.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #4 (permalink)  
Alt 24-08-2009, 12:32
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

probier mal sowas in der Art:
Code:
set @a:=0;
select *, @a:=(@a + 1) % 5 from (
    select * from `tabelle a` order by fk_b_id, datumzeit desc
) as ta
join `tabelle b` as tb on tb.id = ta.fk_b_id
group by concat(tb.id, '-', @a)
order by ta.id, tb.id, datumzeit desc
Gruß,

Anja
Mit Zitat antworten
  #5 (permalink)  
Alt 24-08-2009, 12:36
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Common Queries Tree
Mit Zitat antworten
  #6 (permalink)  
Alt 24-08-2009, 12:46
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Wenn ich das richtig verstehe, habe ich mit meinem Ansatz sogar das Performance-Problem des dortigen umgangen, ohne temporäre Tabellen zu nutzen?!?

Edit: wäre jetzt nur die Frage, inwiefern ich durch das Subselect ein neues verursache. Kannst du das mal benchmarken, Abraxax?

Geändert von AmicaNoctis (24-08-2009 um 12:49 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 24-08-2009, 15:33
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

So .. da bin ich wieder.

@Anja.
Danke für deine Query, aber es scheinen die falschen Daten geliefert zu werden. Ich erhalte pro Referenz nur einen Eintrag. So etwas ähnlich habe ich schon im Einsatz mit MAX() auf der datetime-Spalte.

@onemorenerd
Das ist genau das was ich gesucht habe.

@all
Das Thema Schleifen wollte ich eigentlich vermeiden. Die Ausgabe der Daten soll nur einen kurzen Status liefern. Das wäre mit Kanonen auf Spatzen geschossen.
@Anja. Daher habe ich auch kein Benchmark gemacht. ;-) Zumal meine Daten aktuell noch "überschaubar" sind.

Ich werde jetzt vermutlich nur einen "Reiter" zur Ansicht pro Referenz machen. Das sollte genügen. Aktuell gibt es 5 Referenzen und 126 Hauptdatensätze.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #8 (permalink)  
Alt 24-08-2009, 15:39
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Abraxax Beitrag anzeigen
Ich erhalte pro Referenz nur einen Eintrag.
Das klingt, als hättest du "set @a:=0" vergessen. Eigentlich klappt das nämlich prima, hab mir extra deine beiden Tabellen angelegt, gefüllt und dann damit getestet.
Mit Zitat antworten
  #9 (permalink)  
Alt 24-08-2009, 15:53
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Leider habe ich das nicht vergessen. ;-)

Was allerdings sein kann ... Ich habe natürlich nicht die echten Tabellen gepostet, sondern nur einen vereinfachte Form. Möglicherweise ist es hierbei dazu gekommen, dass ich Werte vertauscht habe. Das kann ich mir zwar nicht vorstellen, aber ausschließen kann ich es natürlich auch nicht.

Ich habe das Thema wie gesagt nun anders gelöst.

Ohne Filter, werden nur offene Punkte der Queue gezeigt. Wenn ein Filter auf eine Referenz gesetzt ist, wird die Queue dieser einen Referenz gezeigt. Das macht die Sache zusätzlich noch übersichtlicher, wie ich finde.

Dennoch Danke für deine/eure Hilfe!
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


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
sql letzten 5 + limit activexactive PHP Developer Forum 10 06-08-2009 16:56
Limit lupo PHP Developer Forum 6 14-11-2005 18:26
limit rönee SQL / Datenbanken 2 05-02-2005 20:44
sum mit limit thetexas SQL / Datenbanken 4 08-07-2004 02:09
select LIMIT 0,10 und trotzdem gesamt rows ohne limit anzeigen? westberlin SQL / Datenbanken 7 07-08-2003 09:39

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

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

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


 

Aktuelle PHP Scripte

EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
Suchmaschine redaktionell, Branchenportal zum Geld verdienen

Programmbeschreibung Die Bezahl-Suchmaschine ist in Perl und PHP programmiert (eigenes CGI-Verzeichnis notwendig), benötigt PHP aber keine MySQL-Datenbank. Webmaster haben mit dieser Suchmaschine neben der normalen kostenlosen Registrierung von Lin

06.04.2019 skripte@ | Kategorie: PHP/ Suchmaschinen
Oog Photo-Video-Gallery

Mit Oog Photo-Gallery können Sie einfach und stilvoll Bilder (auch Video & Audio) auf Ihrem PHP5-Webserver veröffentlichen und verwalten. Lizenz: GNU GPL v2

06.04.2019 trottbrand@ | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:55 Uhr.