| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Vielleicht Joins ind Verbindung mit COALESCE? In etwa folgendes: Code: SELECT COALESCE(a.Spalte, b.Spalte) AS Spalte FROM (SELECT * FROM TabelleA WHERE ....) AS a FULL OUTER JOIN (SELECT * FROM TabelleB WHERE ...) AS b ON .... So wäre es, wenn du genau einen Eintrag bräuchtest. Dein Problem mit den "meheren Einträgen bei größer Datum" lässt sich so nur schwer abbilden, da SQL von der Logik her immer zeilweise arbeitet. Es gibt zwar Möglichkeiten (Subselects und Co), die lehne ich aber aus Performance-Gründen ab. SQL arbeitet dort nur zeilenweise. Für deinen Fall würde ich mit einem UNION arbeiten und einer Sortierung. Die neuesten Einträge immer nach oben sortieren. Dazu in PHP ein kelines IF. Kommt ein Eintrag größer aktuelles Datum vor, setze ein Flag, so dass ein potentieller Eintrag kleiner aktuelles Datum im PHP übersprungen wird.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| |
| | |
| Erfahrener Benutzer | Genau das habe ich gemeint, Dark. Gut, ich meinte halt mit Sortierung und ohne query_num, kommt aber aufs gleiche raus. Union fuinktioniert schon, wenn du noch eine Nachbearbeitung im PHP machst. Der Autor wollte jedoch ohne eine Nachbearbeitung in PHP. Das geht zwar prinzipiell aber nur mit Subselects in der Where-Bedingung und das ist aus Performancesicht ebend nicht zu empfehlen.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| |
| | |
| Erfahrener Benutzer | Nein. Er kriegt bei dir grundsätzlich nur einen. Er will aber aus dem ersten Teilselect (also wenn es neue Einträge hat) mehrere haben. So habe ichs ja verstanden. Das ist ja das Problem. Würde er in jedem Fall nur einen brauchen, wäre es ja einfach ![]()
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Wenn das der Fall ist sieht die DB warscheinlich so aus: Code: konferenz | datum eis | 2010-11-01 kaffee | 2009-01-01 eis | 2009-04-01 schoki | 2009-12-01 kaffee | 2010-10-01 Code: select name,ort,adresse,mail, '1' as query_num from events where datum > curdate() UNION select name,ort,adresse,mail, '2' as query_num from events where datum < curdate() UNION select name,ort,adresse,mail, '3' as query_num from events where datum = curdate() ORDER BY query_num ASC, datum DESC GROUP BY konferenz; (ich weiss das ich group by da grad zweckentfremde
__________________ "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst". | |
| |
| | |
| Neuer Benutzer Registriert seit: 28.01.2010
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | vielen Dank schonmal fuer die guten Anregungen! Also die Datenbank sieht so aus: longname,shortname,ort, ..., category, ... category ist dann z.B.: Konferenz.Schoki Konferenz.Praline Konferenz.Eis (ja, schlechtes Datenbankdesign - ist aber die Vorgabe!) Ich habe mal die Abfrage ein wenig gekürzt, da es sonst zu unbersichtlich wird (Datumsformatierungssachen, etc): Code: $sql = "(SELECT longname,shortname,enddate FROM events where (category='Konferenz.Schoki' && enddate > CURDATE()) order by enddate ASC LIMIT 1) UNION (SELECT longname,shortname FROM events where (category='Konferenz.Praline' && enddate > CURDATE()) order by enddate ASC LIMIT 1) UNION (SELECT longname,shortname,enddate FROM events where (category='Konferenz.Eis' enddate > CURDATE()) order by enddate ASC LIMIT 1) order by startdate"; Okay, dann kann man natürlich über UNION die zusätzliche Methode < CURDATE() noch "vertüten" Ich gehe das mal testen! Edit: Hm, also das mit dem '1' as query_num verstehe ich nicht und funktioniert auch nicht Also um das noch einmal ganz deutlich zu sagen: In Summe moechte ich immer 3 Ausgaben und zwar: -1x Konferenz.Schoki -1x Konferenz.Eis -1x Konferenz.Praline nicht mehr und nicht weniger, d.h. wenn es keinen "aktuellen" Eintrag gibt, dann soll eben der "aktuellste" alte Eintrag genommen werden! Geändert von vci (28.01.2010 um 19:40 Uhr). |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() | Edit: Vergiss was ich geschrieben hab mit dem ganzem Union Müll. Dieser Query ist bei weitem besser: Code: SELECT category, MAX(date) AS date FROM `testcat` GROUP BY category Zitat:
Das heißt in deinem Falle das "aktuellste" Datum für jede Kategorie. Ob das nun in der Zukunft liegt oder nicht ist MySQL relativ egal. Sollte das relevant sein für die spätere Verarbeitung kannst du mit: Code: SELECT category, MAX(date) AS date, (MAX(date) > curdate()) AS is_future FROM `testcat` GROUP BY category (Habs im PMA getestet, sollte hinhauen...
__________________ "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst". Geändert von Dark Guardian (28.01.2010 um 21:32 Uhr). | |
| |
| | |
| Neuer Benutzer Registriert seit: 28.01.2010
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | Vielen Dank für die Hilfe. Noch verstehe ich die Abfrage aber noch nicht SELECT * <-- da sollen also die Spalten rein FROM (SELECT * <-- da sollen also die Spalten rein FROM testcat <-- Tabellenname: events WHERE date > curdate() <-- hier fehlt also noch: && category='Konferenz.Schoki' UNION SELECT * <-- da sollen also die Spalten rein FROM testcat <-- Tabellenname: events WHERE date < curdate()) <-- hier fehlt also noch: && category='Konferenz.Schoki' AS current_events <-- ok?! GROUP BY category <-- ok?! Also wie gesagt: Tabellenname: events Spalten: longname,shortname,ort,...,category,... Wobei category eben: Konferenz.Name #### EDIT: Okay, nach deinem Edit ist das hinfaellig Hm der hoechste Wert ist ja auch nicht unbedingt der richtige, da ja manchmal auch Eintraege im Voraus erzeugt werden, also z.B.: Konferenz.Schoki 2008 Konferenz.Schoki 2009 Konferenz.Schoki 2010 <-- wir sind da Konferenz.Schoki 2011 Konferenz.Schoki 2012 Ich werde das trotzdem einmal probieren Geändert von vci (28.01.2010 um 21:35 Uhr). |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Variablen mit variablen verbinden??? | DRT-Joe | PHP Tipps 2009 | 13 | 22.05.2009 17:24 |
| Klasse statt globaler Variablen | ecomeback | PHP-Fortgeschrittene | 6 | 15.07.2008 16:30 |
| Übergeben von Variablen an in PHP eingebundenes Perl-Script | shredder01 | PHP Tipps 2008 | 3 | 04.04.2008 09:25 |
| Datei mit Variablen so includen, dass Variablen nutzbar? | BartTheDevil89 | PHP Tipps 2008 | 6 | 22.01.2008 20:57 |
| unerklärliches Leeren von Variablen | KuShi | PHP Tipps 2007 | 2 | 08.07.2007 15:19 |
| Teil einer Variablen mit einer Variablen ersetzen ? | simsalabim | PHP Tipps 2007 | 11 | 20.03.2007 20:36 |
| Variable aus Variablen zusammensetzen | juhuwoorps | PHP Tipps 2007 | 1 | 28.11.2005 21:50 |
| Suche Tipps für Persormance-Steigerung (Geld für Nützliches) | Beitragsarchiv | 18 | 16.08.2005 10:57 | |
| Variablen verbinden | Jacks Rache | PHP Tipps 2005-2 | 13 | 09.08.2005 12:32 |
| $_GET Variablen weitergeben | PHP Tipps 2005 | 3 | 01.03.2005 15:36 | |
| Variablen übergeben bzw. auslesen? | PHP Tipps 2005 | 4 | 30.01.2005 03:56 | |
| [Erledigt] register globals off bei variablen Variablen... | PHP Tipps 2005 | 4 | 25.01.2005 17:50 | |
| komplexe Variablen übergeben? | PHP Tipps 2004-2 | 8 | 02.12.2004 08:29 | |
| Variablen per adresse übergeben | rocco | PHP Tipps 2004 | 7 | 24.07.2004 12:03 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| sql result, result sql, http://www.php.de/php-einsteiger/63896-result-variablen-von-sql-verbinden.html, variablen in sql, sql result ausgeben, php sql result ausgeben, php variablen in sql, sql $result, php variablen verbinden, php 2 variablen verbinden, sql variablen, 2 sql abfragen verbinden, php zwei variablen verknüpfen, sql results verbinden, $result sql, sql select verbinden, sql select spalten verbinden, sql select variable, php sql result, php sql limit |