hallo leute,
ich bin noch ziemlich neu und am rumprobieren, was abfragen mit sql und php angeht. einfache abfragen kriege ich schon ganz gut hin - aber jetzt stehe ich echt vor einem problem, welches mich schon tagelang beschäftigt und ich keinen lösungsansatz hinbekomme.
also es geht um eine suche von freien objekten in einem bestimmten zeitraum. einen belegungsplan habe ich mir schon von einem tollen script umgebastelt - aber jetzt will ich nach freien objekten suchen!!
es gibt folgende tabelle buchung (vereinfachte form - in datum wird dann mit funktion date gerechnet) - datum zeigt die besetzten tage - also z.B. 1 wäre der 1.Mai und 2 der 2.Mai usw.:
| objekt_id | datum |
| 401 | 1 |
| 401 | 2 |
| 401 | 3 |
| 401 | 8 |
| 401 | 9 |
| 402 | 3 |
| 402 | 4 |
| 402 | 5 |
| 402 | 11 |
| 402 | 12 |
| 402 | 11 |
| 403 | 1 |
| 403 | 2 |
| 403 | 3 |
| 403 | 8 |
| 403 | 9 |
| 40X | usw. |
jetzt möchte ich abfragen, welches objekt in diesem zeitraum besetzt ist - und mir dann alle anderen anzeigen lassen - außer den besetzten.
wenn jetzt nur das objekt in dem bestimmten zeitraum in der tabelle wäre, ist das kein problem, aber es sind ja auch noch andere zeiten von diesem objekt belegt und diese würden mir ja dann auch angezeigt - das will ich ja gerade nicht !!
wie muss ich die abfrage stellen?
bisher habe ich:
jetzt habe ich alle, die zutreffen - wie werfe ich jetzt alle anderen als ergebnis aus, abzüglich den objekten, die zutreffen?
wäre super dankbar für eure hilfe
liebe grüße
protogue
ich bin noch ziemlich neu und am rumprobieren, was abfragen mit sql und php angeht. einfache abfragen kriege ich schon ganz gut hin - aber jetzt stehe ich echt vor einem problem, welches mich schon tagelang beschäftigt und ich keinen lösungsansatz hinbekomme.
also es geht um eine suche von freien objekten in einem bestimmten zeitraum. einen belegungsplan habe ich mir schon von einem tollen script umgebastelt - aber jetzt will ich nach freien objekten suchen!!
es gibt folgende tabelle buchung (vereinfachte form - in datum wird dann mit funktion date gerechnet) - datum zeigt die besetzten tage - also z.B. 1 wäre der 1.Mai und 2 der 2.Mai usw.:
| objekt_id | datum |
| 401 | 1 |
| 401 | 2 |
| 401 | 3 |
| 401 | 8 |
| 401 | 9 |
| 402 | 3 |
| 402 | 4 |
| 402 | 5 |
| 402 | 11 |
| 402 | 12 |
| 402 | 11 |
| 403 | 1 |
| 403 | 2 |
| 403 | 3 |
| 403 | 8 |
| 403 | 9 |
| 40X | usw. |
jetzt möchte ich abfragen, welches objekt in diesem zeitraum besetzt ist - und mir dann alle anderen anzeigen lassen - außer den besetzten.
wenn jetzt nur das objekt in dem bestimmten zeitraum in der tabelle wäre, ist das kein problem, aber es sind ja auch noch andere zeiten von diesem objekt belegt und diese würden mir ja dann auch angezeigt - das will ich ja gerade nicht !!
wie muss ich die abfrage stellen?
bisher habe ich:
PHP-Code:
//datum ist hier vereinfacht als zahl dargestellt - also 1 wäre hier der 1.
$start= "5";
$ende="8";
mysql_connect("XXXXX","XXXX","XXXX") or die
("Keine Verbindung moeglich");
mysql_select_db("XXXX") or die ("Die Datenbank existiert nicht");
$anfrage="
SELECT * FROM
buchung
WHERE
datum
BETWEEN
'$start'
AND
'$ende'
GROUP BY objekt_id
";
$ergebnis=mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
print ("<p><strong>Anzahl der Treffer: </strong>");
print ($anz);
for ($a=$anz-1;$a>-1; $a--) {
mysql_data_seek ($ergebnis, $a);
$zeile=mysql_fetch_row($ergebnis);
print ("<tr align='center'>");
print ("<td>");
print ("<a href='r1.php?id=");
print ($zeile[0]);
print ("'>");
print ($zeile[0]);
print ("</a>");
print ("</td>");
print ("<td>");
print ($zeile[1]);
print ("</td>");
}
print ("</table>");
wäre super dankbar für eure hilfe
liebe grüße
protogue
Kommentar