MySQL Conditional Join Queries (WordPress DB)

So I’ve been looking through how to get this to work and haven’t been able to find it, or really even properly search.

I’m looking to join t1 to t2 where I get ALL results from t1, and it’s only joined where t2’s column value is “something”, the table is set up that there are many items in the t2 column. So if t2’s column doesn’t equal “something”, then just have the other data (but mainly I only want ONE of each value for t1 row, because there will be a max of one t2 row that qualifies per t1 row).

Read More
select * t1 LEFT JOIN t2 where t2.column="something" AND t1 conditions.

Any help would be appreciated, the tables are WordPress tables, and the thing I’m asked to do would be easier done without WordPress knowing.


Actual code attempt:

$ SELECT * FROM posts LEFT JOIN postmeta ON post_id = id WHERE post_status='publish' AND post_type='portfolio' AND meta_key='rjmeta_video'


$Table 1
$ID     Title ....
$----------------------
$5      Some post I need outside of WP

$Table 2
$meta_id  post_id   meta_key  ....
$--------------------------------
$3        5         rjmeta_video
$4        5         _edit_lock
$5        5         _edit_last

Related posts

Leave a Reply

1 comment

  1. I believe this is what you mean:

    select distinct t1.* from t1 
    LEFT JOIN t2 on [condition for join] and t2.column="something" 
    where [t1 conditions].
    

    This assumes that you are only interested in the t1 fields.

    What we don’t know:

    • table schemas
      • how are they joined? t2.t1_id = t1.id ?
    • t1 conditions

    DISTINCT used above will eliminate duplicate rows if there are multiple matches for the join

    EDIT (OP comment response):

    SELECT distinct posts.* FROM posts 
    LEFT JOIN postmeta ON (post_id = id and meta_key='rjmeta_video')
    WHERE post_status='publish' AND post_type='portfolio'
    

    This assumes that ‘rjmeta_video’ is the “something” you were referring to originally