beim etappenweisen Verschlagworten der in den letzten Wochen eingelesenen Bilder war folgende Abfrage für mich nützlich: Ich wollte alle Bilder markieren, die ein bestimmtes Schlagwort tragen und in den letzten x Tagen eingelesen wurden. Hier die Abfrage, wie sie in Query eingegeben wird:
Beschreibung: Bilder mit Schlagwort = $1 und eingefügt in den letzten $2 Tagen
SQL: select BildID from bild_wort b, schlagwort c where BildID=b.idbild and b.idwort=c.id and c.wort='$1' and DATE(current date) - DATE(xbild.inserted) <= $2
Vielleicht könnt ihr ja Fragmente aus dieser Abfrage brauchen ...
vielen Dank das du die Abfrage hier reingestellt hast.
Könntest du mir vielleicht noch sagen wie ich den Code ändern muß, wenn ich nicht nach dem Einfügedatum suchen möchte sondern nach den Erstellungsdatum des Bildes.
ich bin ja nun auch nicht so der SQL-Freak und brech mir da schon immer einen ab ... Hab mich anhand Peter's Beispiel und dem Pixafe-Datenmodell (das hierzu wirklich sehr nützlich ist!) durchgehangelt.
Warum möchtest Du die Abfrage eigentlich mit Query machen? In der normalen Suchmaske kannst Du doch nach der Kombination aus Schlagwort(en) und Bilddatum suchen.
in der normalen Suchmaske ist das so nicht möglich. Da kann ich nur die Kombination aus Schlagwort und einem Bilddatum eingeben. Nicht aber wie in deiner Abfrage den Zeitraum über mehere Tage selbst bestimmen.
Werde mal versuchen mir selbst was zu basteln, eigentlich müßte ja nur in der Abfrage das Einfügedatum gegen das Erstellungsdatum austauschen. Mal sehen ob es klappt.
verstehe - der Datumsbereich ist der Sonderwunsch. Da komm ich bisher immer so einigermaßen brauchbar mit der Eingabe eines "unvollständigen" Datums hin. Zum Beispiel ... "2010" für alle Bilder des Jahres 2010 "08.2010" für alle Bilder vom August 2010
Wenn Du die Abfrage zum Datumsbereich fertig hast, stellst Du sie ja bestimmt auch hier rein ... ... man weiß ja nie, was man alles mal so brauchen kann :)
mit der eingebauten Datumssuche und den Angaben "Jahr" oder "Monat.Jahr" bin ich bislang eigentlich auch immer gut hingekommen.
Wenn es nun aber gezielt um einen bestimmten Bereich des Bilddatums geht (wie von Holger gewünscht), lässt sich eine solche Abfrage wiefolgt realisieren:
1 2 3 4
select BildID from bild where BildID in (select id from bild where madeyear=$1 and xbild.mademon >=$2 and xbild.mademon <=$3)
Übersetzung: Es sollen alle Bilder gefunden werden, die in einem bestimmten Jahr $1 und zwischen Monat $2 und Monat $3 aufgenommen wurden. Für Bilder aus dem Jahr 2010, die zwischen Mai und August geschossen wurden, wären die einzugebenden Parameter also z.B. $1=2010, $2=5, $3=8.
Falls das genaue Datum (der Tag) von Belang ist, kann man das durch sinngemäßen Einbau des Datenbankfelds madeday zusätzlich berücksichtigen.