join and group table a rows by table b dates












0















I have two m:m tables, profile_wordcards and profile_activities. I want to group all wordcards by activity creation dates, where profile_id = 2.



I.e., if an activity 1 was created on 2019-01-19 2:12:05, any wordcard created on or before that date should be grouped by activity 1. If an activity 2 was created on 2019-01-19 2:14:22, all wordcards created on or before that date should be grouped by activity 2, and so on.



Table: profile_activities



activity_id | profile_id | created_at
------------------------------------------
1 2 2019-01-19 2:12:05
2 2 2019-01-19 2:14:22


Table: profile_wordcards



wordcard_id | profile_id | created_at   
-----------------------------------------
386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
385 2 2019-01-19 2:05:19
263 2 2019-01-19 2:05:19
234 2 2019-01-19 2:11:49
175 2 2019-01-19 2:12:02
201 2 2019-01-19 2:12:02
226 2 2019-01-19 2:12:04
409 2 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05
359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
188 2 2019-01-19 2:12:34
227 2 2019-01-19 2:12:59
187 2 2019-01-19 2:13:01
228 2 2019-01-19 2:13:18
384 2 2019-01-19 2:13:37
177 2 2019-01-19 2:14:00
225 2 2019-01-19 2:14:00


Desired Output:



wordcard_id | profile_id |  created_at     | activity_id | activity_created_at
---------------------------------------------------------------------------------------
-- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
-- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22


I've tried:



select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
from profile_wordcards pwc
left join profile_activities pa on (pa.created_at < pwc.created_at)
where pwc.profile_id = 2
order by activity_id asc


But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.










share|improve this question





























    0















    I have two m:m tables, profile_wordcards and profile_activities. I want to group all wordcards by activity creation dates, where profile_id = 2.



    I.e., if an activity 1 was created on 2019-01-19 2:12:05, any wordcard created on or before that date should be grouped by activity 1. If an activity 2 was created on 2019-01-19 2:14:22, all wordcards created on or before that date should be grouped by activity 2, and so on.



    Table: profile_activities



    activity_id | profile_id | created_at
    ------------------------------------------
    1 2 2019-01-19 2:12:05
    2 2 2019-01-19 2:14:22


    Table: profile_wordcards



    wordcard_id | profile_id | created_at   
    -----------------------------------------
    386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
    385 2 2019-01-19 2:05:19
    263 2 2019-01-19 2:05:19
    234 2 2019-01-19 2:11:49
    175 2 2019-01-19 2:12:02
    201 2 2019-01-19 2:12:02
    226 2 2019-01-19 2:12:04
    409 2 2019-01-19 2:12:05
    361 2 2019-01-19 2:12:05
    359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
    188 2 2019-01-19 2:12:34
    227 2 2019-01-19 2:12:59
    187 2 2019-01-19 2:13:01
    228 2 2019-01-19 2:13:18
    384 2 2019-01-19 2:13:37
    177 2 2019-01-19 2:14:00
    225 2 2019-01-19 2:14:00


    Desired Output:



    wordcard_id | profile_id |  created_at     | activity_id | activity_created_at
    ---------------------------------------------------------------------------------------
    -- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
    -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
    385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
    263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
    234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
    175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
    201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
    226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
    409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
    361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
    -- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
    -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
    188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
    227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
    187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
    228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
    384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
    177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
    225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22


    I've tried:



    select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
    from profile_wordcards pwc
    left join profile_activities pa on (pa.created_at < pwc.created_at)
    where pwc.profile_id = 2
    order by activity_id asc


    But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.










    share|improve this question



























      0












      0








      0








      I have two m:m tables, profile_wordcards and profile_activities. I want to group all wordcards by activity creation dates, where profile_id = 2.



      I.e., if an activity 1 was created on 2019-01-19 2:12:05, any wordcard created on or before that date should be grouped by activity 1. If an activity 2 was created on 2019-01-19 2:14:22, all wordcards created on or before that date should be grouped by activity 2, and so on.



      Table: profile_activities



      activity_id | profile_id | created_at
      ------------------------------------------
      1 2 2019-01-19 2:12:05
      2 2 2019-01-19 2:14:22


      Table: profile_wordcards



      wordcard_id | profile_id | created_at   
      -----------------------------------------
      386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
      385 2 2019-01-19 2:05:19
      263 2 2019-01-19 2:05:19
      234 2 2019-01-19 2:11:49
      175 2 2019-01-19 2:12:02
      201 2 2019-01-19 2:12:02
      226 2 2019-01-19 2:12:04
      409 2 2019-01-19 2:12:05
      361 2 2019-01-19 2:12:05
      359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
      188 2 2019-01-19 2:12:34
      227 2 2019-01-19 2:12:59
      187 2 2019-01-19 2:13:01
      228 2 2019-01-19 2:13:18
      384 2 2019-01-19 2:13:37
      177 2 2019-01-19 2:14:00
      225 2 2019-01-19 2:14:00


      Desired Output:



      wordcard_id | profile_id |  created_at     | activity_id | activity_created_at
      ---------------------------------------------------------------------------------------
      -- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
      -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
      385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
      263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
      234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
      175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
      201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
      226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
      409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
      361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
      -- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
      -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
      188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
      227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
      187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
      228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
      384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
      177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
      225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22


      I've tried:



      select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
      from profile_wordcards pwc
      left join profile_activities pa on (pa.created_at < pwc.created_at)
      where pwc.profile_id = 2
      order by activity_id asc


      But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.










      share|improve this question
















      I have two m:m tables, profile_wordcards and profile_activities. I want to group all wordcards by activity creation dates, where profile_id = 2.



      I.e., if an activity 1 was created on 2019-01-19 2:12:05, any wordcard created on or before that date should be grouped by activity 1. If an activity 2 was created on 2019-01-19 2:14:22, all wordcards created on or before that date should be grouped by activity 2, and so on.



      Table: profile_activities



      activity_id | profile_id | created_at
      ------------------------------------------
      1 2 2019-01-19 2:12:05
      2 2 2019-01-19 2:14:22


      Table: profile_wordcards



      wordcard_id | profile_id | created_at   
      -----------------------------------------
      386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
      385 2 2019-01-19 2:05:19
      263 2 2019-01-19 2:05:19
      234 2 2019-01-19 2:11:49
      175 2 2019-01-19 2:12:02
      201 2 2019-01-19 2:12:02
      226 2 2019-01-19 2:12:04
      409 2 2019-01-19 2:12:05
      361 2 2019-01-19 2:12:05
      359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
      188 2 2019-01-19 2:12:34
      227 2 2019-01-19 2:12:59
      187 2 2019-01-19 2:13:01
      228 2 2019-01-19 2:13:18
      384 2 2019-01-19 2:13:37
      177 2 2019-01-19 2:14:00
      225 2 2019-01-19 2:14:00


      Desired Output:



      wordcard_id | profile_id |  created_at     | activity_id | activity_created_at
      ---------------------------------------------------------------------------------------
      -- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
      -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
      385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
      263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
      234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
      175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
      201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
      226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
      409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
      361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
      -- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
      -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
      188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
      227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
      187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
      228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
      384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
      177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
      225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22


      I've tried:



      select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
      from profile_wordcards pwc
      left join profile_activities pa on (pa.created_at < pwc.created_at)
      where pwc.profile_id = 2
      order by activity_id asc


      But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.







      sql postgresql date group-by






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 20 at 6:39









      sticky bit

      15k91632




      15k91632










      asked Jan 19 at 3:24









      GrowlerGrowler

      4,7931266155




      4,7931266155
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Instead of joining profile_activities directly join a subquery that selects all columns from profile_activities and also the lag()ed created_at. Then you can compare against the created_at of the "previous" activity. For the default value for lag(), that gets taken when no previous activity exists, use '-infinity'. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at will work in that cases too.



          SELECT w.wordcard_id,
          w.profile_id,
          w.created_at,
          a.activity_id,
          a.profile_id,
          a.created_at
          FROM (SELECT a.activity_id,
          a.profile_id,
          a.created_at,
          lag(a.created_at,
          1,
          '-infinity') OVER (ORDER BY a.created_at) created_at_lag
          FROM profile_activities a) a
          INNER JOIN profile_wordcards w
          ON w.profile_id = a.profile_id
          AND w.created_at > a.created_at_lag
          AND w.created_at <= a.created_at
          ORDER BY a.activity_id;


          db<>fiddle






          share|improve this answer
























          • Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

            – Growler
            Jan 19 at 23:28











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54263817%2fjoin-and-group-table-a-rows-by-table-b-dates%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          Instead of joining profile_activities directly join a subquery that selects all columns from profile_activities and also the lag()ed created_at. Then you can compare against the created_at of the "previous" activity. For the default value for lag(), that gets taken when no previous activity exists, use '-infinity'. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at will work in that cases too.



          SELECT w.wordcard_id,
          w.profile_id,
          w.created_at,
          a.activity_id,
          a.profile_id,
          a.created_at
          FROM (SELECT a.activity_id,
          a.profile_id,
          a.created_at,
          lag(a.created_at,
          1,
          '-infinity') OVER (ORDER BY a.created_at) created_at_lag
          FROM profile_activities a) a
          INNER JOIN profile_wordcards w
          ON w.profile_id = a.profile_id
          AND w.created_at > a.created_at_lag
          AND w.created_at <= a.created_at
          ORDER BY a.activity_id;


          db<>fiddle






          share|improve this answer
























          • Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

            – Growler
            Jan 19 at 23:28
















          1














          Instead of joining profile_activities directly join a subquery that selects all columns from profile_activities and also the lag()ed created_at. Then you can compare against the created_at of the "previous" activity. For the default value for lag(), that gets taken when no previous activity exists, use '-infinity'. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at will work in that cases too.



          SELECT w.wordcard_id,
          w.profile_id,
          w.created_at,
          a.activity_id,
          a.profile_id,
          a.created_at
          FROM (SELECT a.activity_id,
          a.profile_id,
          a.created_at,
          lag(a.created_at,
          1,
          '-infinity') OVER (ORDER BY a.created_at) created_at_lag
          FROM profile_activities a) a
          INNER JOIN profile_wordcards w
          ON w.profile_id = a.profile_id
          AND w.created_at > a.created_at_lag
          AND w.created_at <= a.created_at
          ORDER BY a.activity_id;


          db<>fiddle






          share|improve this answer
























          • Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

            – Growler
            Jan 19 at 23:28














          1












          1








          1







          Instead of joining profile_activities directly join a subquery that selects all columns from profile_activities and also the lag()ed created_at. Then you can compare against the created_at of the "previous" activity. For the default value for lag(), that gets taken when no previous activity exists, use '-infinity'. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at will work in that cases too.



          SELECT w.wordcard_id,
          w.profile_id,
          w.created_at,
          a.activity_id,
          a.profile_id,
          a.created_at
          FROM (SELECT a.activity_id,
          a.profile_id,
          a.created_at,
          lag(a.created_at,
          1,
          '-infinity') OVER (ORDER BY a.created_at) created_at_lag
          FROM profile_activities a) a
          INNER JOIN profile_wordcards w
          ON w.profile_id = a.profile_id
          AND w.created_at > a.created_at_lag
          AND w.created_at <= a.created_at
          ORDER BY a.activity_id;


          db<>fiddle






          share|improve this answer













          Instead of joining profile_activities directly join a subquery that selects all columns from profile_activities and also the lag()ed created_at. Then you can compare against the created_at of the "previous" activity. For the default value for lag(), that gets taken when no previous activity exists, use '-infinity'. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at will work in that cases too.



          SELECT w.wordcard_id,
          w.profile_id,
          w.created_at,
          a.activity_id,
          a.profile_id,
          a.created_at
          FROM (SELECT a.activity_id,
          a.profile_id,
          a.created_at,
          lag(a.created_at,
          1,
          '-infinity') OVER (ORDER BY a.created_at) created_at_lag
          FROM profile_activities a) a
          INNER JOIN profile_wordcards w
          ON w.profile_id = a.profile_id
          AND w.created_at > a.created_at_lag
          AND w.created_at <= a.created_at
          ORDER BY a.activity_id;


          db<>fiddle







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 19 at 4:34









          sticky bitsticky bit

          15k91632




          15k91632













          • Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

            – Growler
            Jan 19 at 23:28



















          • Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

            – Growler
            Jan 19 at 23:28

















          Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

          – Growler
          Jan 19 at 23:28





          Amazing work! LAG is great and the use of infinity to capture items below the first activity created_at threshold is great

          – Growler
          Jan 19 at 23:28


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54263817%2fjoin-and-group-table-a-rows-by-table-b-dates%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Liquibase includeAll doesn't find base path

          How to use setInterval in EJS file?

          Petrus Granier-Deferre