SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQL/MySQLi

MySQL/MySQLi Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL/MySQLi diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.05.2010, 20:17:18
Phantasielos Phantasielos ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 35
Beiträge: 3
2 Tabellen: Nach IDs ordnen, 10 neuesten Datensätze pro ID ausgeben

Hi :)

Ich habe grundlegende MySQL Kenntnisse (JOINS, ORDER BY, LIMIT usw.) die für meine Zwecke bisher ausgereicht haben, aber heute komme ich nicht weiter, weder mit Google noch mit der mysql Doku.

Ich hoffe ihr könnt mir helfen.

Ich habe zwei Tabellen in einer Datenbank:

Tabelle 1
Code:
tagid      tag
1           Tag 1
2           Tag 2
3           Tag 3
4           Tag 4
5           Tag 5
die tagid ist eindeutig

Tabelle 2
Code:
id      title       ttagid     zeit
1     Titel 1         2    15641651
2     Titel 343      1   15151511
3     Titel 53        5   15615616
4     Titel gerg     5   12021
5     Titel fwef     3   1518410
6     Titel 34f3     4   156156541
7     Titel fesfef   2   11651561
id ist eindeutig
zeit = time()


Tabelle 2 kann viele tausend Datensätze enthalten.

die Tabelle2.ttagid ist gleich Tabelle1.tagid, jetzt möchte ich die tags aus Tabelle 1 Ordnen (jede Ordnung muss möglich sein, 1-5 oder 5-1 oder auch z.B. 5,3,4,1,2). Dann soll für jeden tag die 10 zugehörigen, neuesten Datensätze ausgegeben werden.

Beispiel:
-> 3 - Tag 3
10 neusten Datensätze aus Tabelle 2 WHERE ttagid=3
-> 1 - Tag 1
10 neusten Datensätze aus Tabelle 2 WHERE ttagid=1


Wie würdet ihr das lösen?
Eine einzige Abfrage, wenn ja, wie sollte die in etwa aussehen?

Oder soll ich das Ganze aus Performance Gründen in mehrere Abfragen aufteilen (was ich selbst auch schaffen würde)
Mit Zitat antworten
  #2  
Alt 21.05.2010, 01:47:48
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: 2 Tabellen: Nach IDs ordnen, 10 neuesten Datensätze pro ID ausgeben

Hi

Zitat:
zeit = time()
Ist nicht wirklich gut um mit dem Datum/Zeit zu rechnen/sortieren

Aber nun zu deinem eigentlichen prob
Zitat:
Wie würdet ihr das lösen?
Mit
Code:
ORDER BY FIELD(tagid,5,3,4,1,2)
Zitat:
Dann soll für jeden tag die 10 zugehörigen, neuesten Datensätze ausgegeben werden.Eine einzige Abfrage, wenn ja, wie sollte die in etwa aussehen?
Etwa so: SELECT ...FROM...LEFT JOIN....ON.....ORDER BY FIELD..... ,zeit DESC LIMIT 50
Und dann per Abfragende Sprache (php?) die Ausgabe sortieren

mfg

Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #3  
Alt 21.05.2010, 08:08:26
Phantasielos Phantasielos ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 35
Beiträge: 3
AW: 2 Tabellen: Nach IDs ordnen, 10 neuesten Datensätze pro ID ausgeben

Zitat:
Etwa so: SELECT ...FROM...LEFT JOIN....ON.....ORDER BY FIELD..... ,zeit DESC LIMIT 50
Und dann per Abfragende Sprache (php?) die Ausgabe sortieren
Das Problem dabei ist das die Tabelle 2 auch 100.000 Einträge haben kann. Wenn ich jetzt 12 Kategorien von 20 abfragen will, ergibt das bei 10 Einträgen pro Kategorie 120 Ergebnisse. Bei deiner Abfrage von Limit 50 geht das schon mal nicht, wenn dann muß ich alle 100.000 abfragen und mit PHP mir die gewünschten rauspicken. Das ist keine elegante Lösung.
Hat noch jemand eine Idee?
Mit Zitat antworten
  #4  
Alt 21.05.2010, 08:41:09
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: 2 Tabellen: Nach IDs ordnen, 10 neuesten Datensätze pro ID ausgeben

Hi

Zitat:
Hat noch jemand eine Idee?
Ja ich, gib nächstes mal die ganzen Rahmenbedinungen an.
Meine nicht so
Zitat:
elegante Lösung
bezog sich auf 5 tags und 10 Ergebnisse.
= ?

Zitat:
Wenn ich jetzt 12 Kategorien von 20 abfragen will
Das geht schon mal nicht mit ORDER BY FIELD in einem step.
Da bei dem Muster von 12 angewendet auf 20, 8 unsortiert werden.
Zauberwort: Temporäre Tabelle
In die packst du deine 12 tags rein und machst dann die Abfrage mit
LIMIT 120.
Dann hast du auch deine 120 Ergebnisse.

Denke nur um das dynamisch zu halten wird eine Funktion die den
Query und die Temptabelle baut nötig sein.

Und nun probiere das vorgestellte erstmal aus und präsentiere deine Ergebnisse. Hier ist eigeninitative gefragt und die hättest du nach meinem Vorschlag schon zeigen können.

mfg

Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #5  
Alt 23.05.2010, 00:00:28
Phantasielos Phantasielos ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 35
Beiträge: 3
AW: 2 Tabellen: Nach IDs ordnen, 10 neuesten Datensätze pro ID ausgeben

Ich habe jetzt verstanden was du meinst Ckaos, du hast aufgrund meiner Angaben einen völlig logischen Lösungsvorschlag gebracht.

Was deine Idee mit der temporäten Tabelle angeht: auch diesen Lösungsweg habe ich in der Theorie verstanden. Leider bin ich offenbar zu blöd diese Therorie in eine funktionierende SQL Abfrage umzuwandeln.

Das Ganze ich mehr ein Spaß Projekt als etwas das jemals produktiv eingesetzt werden wird. Deshalb habe ich es einfach aufgegeben und beschloßen mich meinem einzigen sinnvollen Projekt und dem Privatleben zu widmen anstatt hier nochmal viele Stunden zu verbraten.

Danke für deine Hilfe.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
In einem Feld identische Datensätze nur einmal ausgeben fortyseven11 MySQL/MySQLi 1 29.12.2009 09:00:11
datensätze updaten, neue und upgedatete datensätze ausgeben cooperraser MySQL/MySQLi 1 15.09.2008 00:35:41
MySql Abfrage in Tabellen ausgeben Peer PHP Grundlagen 4 13.08.2006 18:49:07
Tabellen verknüpfen und in PHP ausgeben Steelrose MySQL/MySQLi 5 16.08.2005 18:08:31
Alle Datensätze einer Tabelle ausgeben! JoeJoeMaker MySQL/MySQLi 19 26.01.2004 20:17:48


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:36:50 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.


© 2001-2020 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt