Tom: Vernünftiger Aufbau/Abfragen für einen Belegungsplaner

Beitrag lesen

Hello,

insert into zahl (zahl) select distinct 25 from zahl where 25 not in (select zahl from zahl);

Deine Abfrage liefert zu viele (Zwischen-)Ergebnisse.

stimmt leider.

DISTINCT ist nicht der beste Weg, sondern die Abfrage so zu gestalten, dass die gewünschte Anzahl herauskommt. Du fragst hier alle Reihen ab, in denen 25 nicht vorkommt. Das kann eine recht große Menge werden. Die interessiert dich aber gar nicht. Im Gegenteil, sie ist viel zu groß, weil du nur eine Ergebniszeile haben willst, und nicht so viele wie Datensätze in zahl vorhanden sind. Auf diese unsinnig große Menge lässt du dann DISTINCT los, was herauszufinden versucht, wieviele unterschiedliche Werte es gibt. Deswegen hab ich in meinem Vorschlag ein Subselect im FROM stehen, denn das liefert nur exakt einen Datensatz, der dann entweder genommen wird oder nicht.

Dann also besser so für die Terminverwaltung:

$sql =
"insert into termin (id, start, ende)
 select null, '$start', '$ende'
    from (select null as id, '$start' as start, '$ende' as ende) as dummy
    where (select count(*)
      from termin
      where ende >= '$start' and start <= '$ende') = 0";

$start und $ende sind vrher ins passende Format zu bringen.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de