다른 스키마를 사용하여 MySQL에 몇 가지 테이블이 있지만 모든 테이블에 자동 증가 ID와 타임 스탬프가 있습니다 (보다 정확하게 열 이름은 "create_timestamp"입니다). datetime 형식).스키마가 다른 여러 MySQL 테이블에서 ID 및 타임 스탬프를 선택하십시오.
이 질문에 더 많은 문맥을 부여하기 위해 소셜 미디어 애그리 게이터를 구축 중이며 내 MySQL DB는 소셜 미디어 API의 캐시 된 데이터입니다. 그래서 테이블은 Instagram, Youtube Videos, Tweets 등을위한 것입니다. 제 목표는 create_time을 기준으로 이들 각각을 혼합하여 총 20 개의 레코드를 쿼리하는 것입니다. 각 미디어 API는 다른 데이터를 반환하기 때문에 각 테이블의 스키마가 매우 다릅니다. 난 그냥 모든 ID 년대와 테이블 유형을 쿼리해야 할 수도 있습니다, 그리고 PHP에서 이러한 통해 루프가 자신의 개인 데이터를 얻을 수 실현
SELECT * FROM instagrams, tweets, youtube_videos, tumblr_posts ORDER BY create_time DESC LIMIT 20;
: 의사 코드에서
, 나는 이러한 목표를 달성하기 위해 노력하고있어 . 예를 들어, 많은 의사 :MySQL의
SELECT id, table_name FROM instagrams, tweets, youtube_videos, tumblr_posts ORDER BY create_time DESC LIMIT 20;
PHP
-For each result from that query as $row, query for:
SELECT * FROM $row["table_name"] WHERE id=$row["id"]
내 PHP 응용 프로그램에이 데이터를 얻을 수있는 가장 좋은 가장 효율적인 방법은 무엇입니까?
UPDATE :
감사합니다 댄, UNION을 사용하면이 내가 ID 및 테이블 이름을 선택 해낸 것입니다.
SELECT id, create_timestamp, "instagrams" as "table_name" FROM instagrams
UNION
SELECT id, create_timestamp, "tumblr_posts" as "table_name" FROM tumblr_posts
UNION
SELECT id, create_timestamp, "wordpress_posts" as "table_name" FROM wordpress_posts
UNION
SELECT id, create_timestamp, "tweets" as "table_name" FROM tweets
UNION
SELECT id, create_timestamp, "youtube_videos" as "table_name" FROM youtube_videos
UNION
SELECT id, create_timestamp, "manual_photo" as "table_name" FROM manual_photo
ORDER BY create_timestamp DESC
LIMIT 20
그런 다음 PHP에서 개별 레코드를 한 번에 하나씩 반복하여 쿼리합니다.
20 개의 최신 레코드를 얻는 것이 최선의 방법이라고 생각합니다. 그런 다음이 쿼리의 결과에서 정보를 얻으십시오. –
감사! 전에는 UNION을 사용하지 않았지만 일을 끝내는 것처럼 보입니다. – user1418227