Announcement

Collapse
No announcement yet.

Daten mit parent_id

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten mit parent_id

    Hallo,

    ich habe folgende Tabellenstruktur:

    Code:
    CREATE TABLE `contests` (
      `contest_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `contest_parent_id` int(11) DEFAULT NULL,
      `contest_client_id` int(11) DEFAULT NULL,
      `contest_tagname` varchar(32) DEFAULT NULL,
      `contest_image` varchar(255) DEFAULT NULL,
      `contest_start` timestamp NULL DEFAULT NULL,
      `contest_end` timestamp NULL DEFAULT NULL,
      PRIMARY KEY (`contest_id`),
      UNIQUE KEY `contest_tagname` (`contest_tagname`),
      KEY `contest_parent_id` (`contest_parent_id`),
      KEY `contest_client_id` (`contest_client_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Mit folgenden Einträgen:
    Code:
    RT INTO `contests` (`contest_id`, `contest_parent_id`, `contest_client_id`, `contest_tagname`, `contest_image`, `contest_start`, `contest_end`)
    VALUES
    	(1, NULL, NULL, 'Test_01.2018', 'Test_01.jpg', '2018-02-17 13:00:00', '2018-03-17 13:00:00'),
    	(2, NULL, NULL, 'Test_01.2018', 'Test_02.jpg', '2018-03-16 13:00:00', '2018-04-06 12:00:00'),
    	(3, NULL, NULL, 'Test_03.2018', 'Test_03.jpg', '2018-03-11 12:00:00', '2018-05-09 12:00:00'),
    	(4, NULL, NULL, 'Test_04.2018', 'Test_04.jpg', '2018-03-21 13:00:00', '2018-04-12 12:00:00'),
            (5, NULL, NULL, 'Test_05.2018', 'Test_05.jpg', '2017-10-17 12:00:00', '2018-11-30 13:00:00'),
    	(6, NULL, NULL, 'Test_06.2018', 'Test_06.jpg', '2017-11-30 23:00:00', '2018-12-31 22:59:00'),
    	(7, 5, 627, 'Test_07.2018', 'Test_07.jpg', '2018-02-17 12:00:00', '2018-11-30 13:00:00'),
    	(8, NULL, 627, 'Test_08.2018', 'Test_08.jpg', '2018-01-17 12:00:00', NULL);
    Ich möchte nun folgendes erreichen:
    1. Nur die Einträge die in den Zeitraum contest_start bis contest_end passen. Das habe ich so gelöst:
    Code:
    WHERE (t1.contest_start <= NOW() AND (t1.contest_end IS NULL OR t1.contest_end > NOW()));
    2. Wenn eine contest_client_id ermittelt wurde (Läuft in PHP) zusätzlich das:
    Code:
    t1.contest_parent_id = 627
    3. Was mir aber nicht gelingen will. Wenn ein Eintrag die contest_parent_id nicht NULL hat, dann soll der Eintrag contest_id = contest_parent_id aus der Menge rausfliegen. Also laut den Daten dann der Eintrag mit der contest_id = 5 muss raus, weil es einen Eintrag contest_parent_id = 5 gibt. Wie könnte ich das machen?

    Liebe Grüße
    Kerstel

  • #2
    [HIGHLIGHT=C#]AND t1.contest_id NOT IN (SELECT distinct t2.contest_parent_id FROM `contests` t2 where t2.contest_parent_id is not null)[/HIGHLIGHT]

    https://www.db-fiddle.com/f/24Xov6gFpjDPQFXYtkUUNS/2

    Comment


    • #3
      Hi,

      funktioniert super, vielen Dank!

      LG
      Kerstel

      Comment

      Working...
      X