php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.05.2011, 14:56  
Neuer Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
tom$on befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Datensätze anhand eines Zeitraumes aus einer weiteren Tabelle ausschließen

Hallo phpler,

ich versuche eine kleine Suche zu schreiben, die mir Datensätze anhand eines Zeitraumes aus einer weiteren Tabelle ausschließt.

Es sollen alle User ausgeschlossen werden die in der Tabelle buchungsplan eine Buchung in dem Zeitraum haben. Die Werte dienstdatum_von & dienstdatum_bis werden per POST erfasst und liegen als variable vor.

Der Aufbau ist wie folgt:

Tabelle: cms_user
__id_pk_cms_user | ansprechpartner
1 | Max
2 | Thomas
3 | Peter
4 | Marie

Tabelle: cms_buchungsplan
__id_pk_cms_buchungsplan | __id_fk_cms_user | dienstdatum_von | dienstdatum_bis
1 | 2 | 2011-05-31 | 2011-05-31
2 | 4 | 2011-06-01 | 2011-06-03
3 | 2 | 2011-06-04 | 2011-06-04

Werte per POST z.B.:
dienstdatum_von = 2011-05-31
dienstdatum_bis = 2011-05-31

Die Datensätze lasse ich in einer while schleife untereinander anzeigen.

Ergebnis mit den Werten sollte wie folgt sein:
__id_pk_cms_user | ansprechpartner
1 | Max
3 | Peter
4 | Marie
(Thomas ist an dem Tag gebucht, Max & Peter wurden nicht gebucht, Marie wurde gebucht aber nicht in dem Zeitraum also verfügbar)

So ist mein SQL Befehl der leider nicht geht:

SELECT
*
FROM
cms_user
LEFT OUTER JOIN
cms_buchungsplan ON cms_user.__id_pk_cms_user = cms_buchungsplan.__id_fk_cms_user
WHERE
(!cms_buchungsplan.dienstdatum_von > '2011-05-31' AND !cms_buchungsplan.dienstdatum_bis < '2011-05-31') OR
cms_buchungsplan.__id_fk_cms_user IS NULL

Über eine Unterstützung würde ich mich sehr freuen.
tom$on ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.05.2011, 15:26  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Code:
SELECT id_pk_cms_user FROM cms_user WHERE id_pk_cms_user NOT IN ([UNTERABFRAGE])
Jetzt musst du für [UNTERABFRAGE] nur noch eine Abfrage finden, die dir die gebuchten Benutzer liefert. Das ist einfacher, weil du jede Buchung einzeln betrachten kannst. Für jede Buchung gibt es drei Möglichkeiten, wie sie mit einem neuen Zeitraum kollidieren kann.
  1. der erste Tag des neuen Zeitraums liegt in dem gebuchten Zeitraum,
  2. der letzte Tag des neuen Zeitraums liegt in dem gebuchten Zeitraum,
  3. der erste Tag des neuen Zeitraums liegt vor dem gebuchten Zeitraum und der letzte Tag des neuen Zeitraums liegt nach dem gebuchten Zeitraum.
Alle drei Bedingung formulierst du in SQL und verknüpfst sie mit OR.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (31.05.2011 um 15:34 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 31.05.2011, 15:58  
Neuer Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
tom$on befindet sich auf einem aufstrebenden Ast
Standard

Hallo Mimomamu,

vielen Dank für deine schnelle Antwort!
Leider habe ich noch nicht ganz verstanden wie ich jetzt die zweite Tabelle ansprechen kann.

Kann man in ([UNTERABFRAGE]) erneut mit SELECT arbeiten?
tom$on ist offline   Mit Zitat antworten
Alt 31.05.2011, 16:07  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Zitat:
Kann man in ([UNTERABFRAGE]) erneut mit SELECT arbeiten?
Ja!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 31.05.2011, 16:19  
Neuer Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
tom$on befindet sich auf einem aufstrebenden Ast
Standard

Hallo Wolf29,

danke für deine Antwort. Ich habe das mal versucht wie folgt umzusetzen was aber leider nicht den gewünschten Erfolg erzielt. Was muss ich wie anders machen?

Code:
SELECT

id_pk_cms_user 

FROM cms_user WHERE id_pk_cms_user NOT IN (


     SELECT 

      dienstdatum_von
      dienstdatum_bis

      FROM cms_buchungsplan WHERE 

      dienstdatum_von > '2011-05-31' AND dienstdatum_bis <= '2011-05-31'


)
Gruß Tom$on
tom$on ist offline   Mit Zitat antworten
Alt 31.05.2011, 16:33  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Hi.
Du hast gleich hier nen Syntaxfehler:

Zitat:
dienstdatum_von
dienstdatum_bis
fehlt da nicht was ? Ansonsten mach doch erst die Unterabfrage und teste Sie z.B. in phpmyadmin, bis das gewünschte Ergebnis kommt und dann fügst Du sie in dein bestehendes SQL Statement ein. Anbei: hast schon gesehen, dass deine beiden Beispieldatumsangaben identisch sind?!?

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 31.05.2011, 17:01  
Neuer Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
tom$on befindet sich auf einem aufstrebenden Ast
Standard

Hallo Wolf29,

vielen Dank für deine Rückmeldung. Da muss glaube ich die Tabelle noch vor oder? Könntest du mir bitte zeigen wie eine Abfrage in meinem Fall aussehen muss?

Es klapp hier einfach nicht so wie es soll
Und ich weiß auch nicht wie und wo ich anfangen muss...

Gruß Tom$on
tom$on ist offline   Mit Zitat antworten
Alt 31.05.2011, 20:29  
Neuer Benutzer
 
Registriert seit: 31.05.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
tom$on befindet sich auf einem aufstrebenden Ast
Standard

Auch über weitere unterstützung aus dem Forum würde ich mich sehr freuen.
tom$on ist offline   Mit Zitat antworten
Alt 31.05.2011, 21:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Auch über weitere unterstützung aus dem Forum würde ich mich sehr freuen.
Du zuerst!
Zitat:
Es klapp hier einfach nicht so wie es soll
Und ich weiß auch nicht wie und wo ich anfangen muss...
Forenrichtlinien
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 31.05.2011, 21:43  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von wolf29 Beitrag anzeigen
Hi.
Du hast gleich hier nen Syntaxfehler:
wolf29 stubst dich sogar mit der Nase drauf
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz 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
Was ist das Limit der Datensätze in einer MySQL Tabelle? ph!l Datenbanken 3 17.01.2010 22:37
Bestehende php /Myqsl Tabelle Neben einander aus geben Totti-Totti PHP Tipps 2009 3 21.12.2009 11:00
Löschen von Datensätzen pioneer01 Datenbanken 2 02.08.2009 13:09
Datensätze aus einer dynamisch erzeugten Tabelle einfügen?! PermanetMarker PHP Tipps 2006 15 30.06.2006 11:48
wieviele datensätze hat meine tabelle? Dilandau PHP Tipps 2007 12 07.12.2005 15:51
wieviele datensätze hat meine tabelle? Dilandau Datenbanken 10 07.12.2005 13:51
Problem mit Anzeige einer Tabelle mit dem Firefox? HTML, Usability und Barrierefreiheit 8 28.11.2005 15:08
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
Datensätze in tabelle anzeigen tommi89 Datenbanken 5 23.09.2005 11:44
Gesamte Datensätze einer Tabelle abfragen Datenbanken 12 17.06.2005 00:29
wie kann ich alle datensätze aus einer tabelle auslesen LA-Finest PHP Tipps 2005 7 10.05.2005 13:32
Anzahl Datensätze in einer Tabelle PHP Tipps 2004 12 24.11.2004 11:45
Datensätze löschen für die kein Eintrag in anderer Tabelle.. robo47 Datenbanken 7 10.11.2004 09:42
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45
Datensätze verschieben? von Tabelle in eine andere? Datenbanken 3 04.06.2004 11:10


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