php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.11.2005, 08:43  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard Ein Subselect nötigerweise?

Hallo,
habe ein Select wo ich ein date Wert umwandeln muss

Code:
DATE_FORMAT(start_date, '%Y-%c') as start_y_m,
DATE_FORMAT(end_date, '%Y-%c') as end_y_m
nun muss ich ein BETWEEN in der WHERE Bedingung machen:

Code:
WHERE '$y_m' BETWEEN start_y_m AND end_y_m
Das funktioniert bekannterweise ja nicht in einem einzigen Select.

Nun dachte ich mir so etwas wie eine temp Table oder Subselect.
Leider finde ich dazu reichlich wenig Beispiele (ist Neuland für mich) anhand dessen ich das verstehen kann, wie ich so etwas realisieren kann.

Hat jemand von euch Tipps?
Gruss, Micha
tekknotrip ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.11.2005, 09:13  
Gast
 
Beiträge: n/a
Standard

das sollte doch in einer einzigen Abfrage machbarsein.
zB so:
Code:
SELECT
   start_date,
   end_date,
   DATE_FORMAT(start_date, '%Y-%m') as start_y_m,
   DATE_FORMAT(end_date, '%Y-%m') as end_y_m
FROM
   tabelle
WHERE
   '$y_m' BETWEEN DATE_FORMAT(start_date, '%Y-%m') AND DATE_FORMAT(end_date, '%Y-%m')
Man kann aliAS -Bezeichner, die im SELECT-Teil erzeugt werden,
NICHT im WHERE-Teil verwenden (,weil die dort unbekannst sind.),
sondern
man muss in dem WHERE-Teil den Ausduck verwenden, mit dem man diese aliAS-Bezeichner erzeugt.

UND:
verwende nicht %c für den Monat, sondern %m (Monat muss in diesem Fall 2-stellig sein!)
UND:
formuliere die Variable $y_m auch im Format "2005-01" !

~dilemma~
  Mit Zitat antworten
Alt 09.11.2005, 09:52  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

umpf, morgendummheit

Man kann manchmal wirklich um drei Ecken denken

$m ist bei mir eine for Schleife, kann da schlecht ne 0 vorne an stellen.
Aber das Ergebnis funktioniert wunderbar!!

Dankeschön!
Gruss, Micha
tekknotrip ist offline   Mit Zitat antworten
Alt 09.11.2005, 10:04  
Gast
 
Beiträge: n/a
Standard

Ich verstehe deine Antwort jetzt zwar nicht, aber bedenke,
daß:
----> 20061 nicht größer als 200510 ist, sondern 20061 kleiner als 200510 ist !
und:
----> 20061 between 200510 and 20062 syntaktisch falsch ist!

~dilemma~
  Mit Zitat antworten
Alt 09.11.2005, 11:03  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von tekknotrip
$m ist bei mir eine for Schleife, kann da schlecht ne 0 vorne an stellen.
?

$i = substr("0$i", -2); // macht aus 5 ein 05
Zergling-new ist offline   Mit Zitat antworten
Alt 13.11.2005, 12:42  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von tekknotrip
$m ist bei mir eine for Schleife, kann da schlecht ne 0 vorne an stellen.
Du könntest dir auch deine Abfrage recht einfach mit sprintf() zusammenbauen und dort auch direkt angeben, dass der Monat zweistellig sein soll und gegebenenfalls mit 0 aufgefüllt wird:
PHP-Code:
<?php
    $sql 
sprintf("SELECT
                                start_date,
                                end_date,
                                DATE_FORMAT(start_date, '%Y-%m') AS start_y_m,
                                DATE_FORMAT(end_date, '%Y-%m') AS end_y_m
                            FROM
                                tabelle
                            WHERE
                                %d-%02d BETWEEN DATE_FORMAT(start_date, '%Y-%m') AND DATE_FORMAT(end_date, '%Y-%m')"
,
                    
$jahr,
                    
$monat);
?>
xabbuh 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
Variable aus Subselect in JOIN verwenden GSJLink Datenbanken 5 25.05.2008 11:36
[gelöst] SELECT COUNT(*) FROM SUBSELECT braucht ewig! stefanjann Datenbanken 3 25.02.2008 08:44
Subselect obi Datenbanken 5 10.01.2008 10:40
Update und Subselect Simon9990 Datenbanken 3 13.11.2007 00:31
Top-x bei subselect - Summierung simsalabim Datenbanken 10 19.07.2007 11:27
[Erledigt] UPDATE und Subselect??? Datenbanken 2 31.01.2006 19:06
[Erledigt] Problem mit Subselect Datenbanken 3 14.03.2005 08:13
Subselect Quadaptor Datenbanken 2 16.12.2004 15:01
[Erledigt] PHP, Mysql - Abfragen zusammenfassen evtl SubSelect PHP-Fortgeschrittene 2 02.12.2004 10:42

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
subselect verstehen, subselect variable, nötigerweise, was macht ein subselect, monats subselect

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:38 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.