Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Indenting parenthesized table references #37

Open
fulldecent opened this issue Jan 18, 2018 · 4 comments
Open

Indenting parenthesized table references #37

fulldecent opened this issue Jan 18, 2018 · 4 comments

Comments

@fulldecent
Copy link
Contributor

The guide does not appear to have an opinion on indenting parenthesized table references.

SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_tokens
    ON pmt_tokens.id = wp_pmt_order_token.fk_token_id
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (
                 pmt_orders
            JOIN wp_users
              ON wp_users.ID = pmt_orders.user_id
       ) ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997

Could this matter please be adjudicated?

Note to self: https://dev.mysql.com/doc/refman/5.7/en/join.html

@treffynnon
Copy link
Owner

I've given this a little thought, but not sure I've come to a conclusion yet. There are quite a few options, of which, these are just a few. I am not sure I have a strong opinion either way on these.

SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (pmt_orders
                  JOIN wp_users
                    ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997
SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (pmt_orders JOIN wp_users ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997
SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (pmt_orders JOIN wp_users
                               ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997
SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (     pmt_orders
                  JOIN wp_users
                    ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997
SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (
                  pmt_orders
                  JOIN wp_users
                    ON wp_users.ID = pmt_orders.user_id
       )
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997
SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (pmt_orders
         JOIN wp_users
           ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997

@treffynnon
Copy link
Owner

If I were to pick one it would probably be:

SELECT pmt_courses.course_name, pmt_tokens.token, pmt_orders.order_id, wp_users.user_email
  FROM wp_pmt_order_token
  JOIN pmt_courses
    ON pmt_courses.course_id = pmt_tokens.course_id
       LEFT JOIN (pmt_orders JOIN wp_users
                               ON wp_users.ID = pmt_orders.user_id)
       ON pmt_orders.order_token = pmt_tokens.token
 WHERE wp_pmt_order_token.fk_order_id = 28997

Have you had any further thoughts on this @fulldecent ?

@fulldecent
Copy link
Contributor Author

I have studied some other style guides for this question:

And they are all just so far behind the times. They do not provide any useful commentary on the subject.

So just from the looks of it, I will say your choice,

       ...
       LEFT JOIN (pmt_orders JOIN wp_users
                               ON wp_users.ID = pmt_orders.user_id)

as well as

       ...
       LEFT JOIN (     pmt_orders
                  JOIN wp_users
                    ON wp_users.ID = pmt_orders.user_id)

seem categorically better than the others. The "river" rule is strong and should not be violated. Otherwise, the one-liner is a non-answer, since any indentable thing could be a one-line in the right circumstance.

End result, I agree with your choice.

@pragunbhutani
Copy link

I agree with

   LEFT JOIN (pmt_orders JOIN wp_users
                           ON wp_users.ID = pmt_orders.user_id)

as well because of its adherence to the river rule, which I've found to be very helpful for readability. Subjectively, I find it to be the easiest of all to read.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants