별도의 테이블에있는 필드가 동일한 ID에 대해 null인지 비어 있는지 확인하기위한 하위 쿼리

알렉스

나는 이런 식으로 저자를 얻고 있습니다.

$feat_authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE display_name <> 'admin' ORDER BY rand() LIMIT 3");

하지만 별도의 데이터베이스 테이블을 확인하고 싶습니다. 해당 관련 ID (첫 번째 테이블의 user_id 및 ID 일치)에 대해 비어 있지 않거나 null이 아닌지 확인 wp_usermeta하는 필드 meta_key='description'가 있습니다 .

wp_usermeta수율 선택 및 인쇄 :

Array
(
    [0] => stdClass Object
        (
            [umeta_id] => 19
            [user_id] => 2
            [meta_key] => first_name
            [meta_value] => Rita
        )

    [1] => stdClass Object
        (
            [umeta_id] => 20
            [user_id] => 2
            [meta_key] => last_name
            [meta_value] => Santos
        )

    [2] => stdClass Object
        (
            [umeta_id] => 21
            [user_id] => 2
            [meta_key] => nickname
            [meta_value] => rita
        )

    [3] => stdClass Object
        (
            [umeta_id] => 22
            [user_id] => 2
            [meta_key] => description
            [meta_value] => I’m the coolest person in Uniplaces. I also post stuff on Facebook and other social networks.
        )

그리고 나는 이것을 시도했는데, 나는 모든 빈 설명을 제공합니다. SELECT * FROM wp_usermeta WHERE meta_key = 'description' AND meta_value = ''

그러나 첫 번째 쿼리에서 두 번째 테이블의 설명이 비어 있거나 null이 아닌 결과 만 얻도록 결합하는 방법을 모르겠습니다. 나를 버리는 또 다른 점은 첫 번째 ID가 다른 이름 (user_id와 반대되는 ID)을 갖기 때문에 두 번째 쿼리로 ID를 가져 오는 방법을 잘 모르겠다는 것입니다.

user359135

요청한 내용을 100 % 확신 할 수는 없지만 추가 데이터와 case 문으로 해당 테이블에 조인을 사용할 수 있습니까?

SELECT 
    ID
    , user_nicename 
    ,CASE 
        WHEN Len([meta_key='description'])>0 THEN 'Some Content'
        WHEN Len([meta_key='description'])=0 THEN 'No Content'
        WHEN [meta_key='description'] Is Null THEN 'Null'
        ELSE 'OTHER'
     END AS Category
from $wpdb->users as u
    left outer join wp_usermeta as m
        ON u.ID=m.user_id
WHERE display_name <> 'admin' 
ORDER BY rand() 
LIMIT 3

설명이 null이거나 비어있는 사용자 만보고 싶은 경우 :

SELECT 
    ID
    , user_nicename 
    ,[meta_key='description']
from $wpdb->users as u
    INNER JOIN wp_usermeta as m
        ON u.ID=m.user_id
WHERE 
    display_name <> 'admin' 
    AND Len([meta_key='description'])>0
    AND [meta_key='description'] IS NOT NULL -- probably not required depending on len() behaviour
ORDER BY rand() 
LIMIT 3

또는 사용자 당 두 번째 테이블에 여러 레코드가 있고 meta_key = description을 원합니까?

SELECT 
    ID
    , user_nicename 
    ,meta_value
from $wpdb->users as u
    left outer join wp_usermeta as m
        ON u.ID=m.user_id
        AND meta_key='description'
WHERE 
    display_name <> 'admin' 
    AND Len(meta_value)>0
ORDER BY rand() 
LIMIT 3

방금 테이블 구조를 간략히 살펴 보았고 옵션 3과 같은 것을 원한다고 생각합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관