2015-11-11 2 views
0

У меня возникла проблема с получением 4 SQL-запросов для разных таблиц в рамках одного запроса. Запросы являются:Объединение небольших запросов в более крупный запрос mysql

SELECT COUNT(*) AS posts FROM `wp_posts` WHERE post_type='updates' AND post_status='publish' 

И

SELECT COUNT(*) AS posts FROM `wp_posts` WHERE post_type='post' AND post_status='publish' 

Структура wp_posts таблицы:

| ID | title | post_type | post_status | 
------------------------------------------------ 
| 1 | Name | updates | publish | 
| 2 | Name 2 |  post | publish | 

Другой запрос:

SELECT COUNT(*) AS users FROM wp_usermeta WHERE wp_usermeta.meta_value LIKE '%delegate%' 

Структура wp_usermeta таблицы я s:

| ID | user_id | meta_key  |   meta_value   | 
----------------------------------------------------------------- 
| 29 | 4 | ei_capabilities | a:1:{s:13:"delegate";b:1;} | 

И последнее:

SELECT wp_postmeta.meta_value AS version FROM wp_postmeta WHERE wp_postmeta.meta_key='content_version' AND post_id=1 

wp_postmeta таблица структура:

| ID | post_id | title | meta_key  | meta_value | 
--------------------------------------------------------------- 
| 21 |  1  | Name | content_version |  1  | 

Есть ли способ, чтобы объединить их в один запрос?

+0

один rwquest средства? Как один запрос? –

+0

Привет @SubinCPoonamgode да только под одним SELECT – qqruza

+0

PLS добавить структуру таблиц или поле, которое мы можем объединить между двумя таблицами, если существует – user3600910

ответ

1

Первые два запроса похожи, так что я сделал wp_posts в качестве основных table.The остальных двух запросов в виде подзапросов.

SELECT 
    (SUM(CASE WHEN post_type='updates' AND THEN 1 ELSE 0 END)) as col1, 
    (SUM(CASE WHEN post_type='post' AND post_type='post' THEN 1 ELSE 0 END)) as col2, 
    (SELECT COUNT(*) AS users FROM wp_usermeta WHERE wp_usermeta.meta_value LIKE '%delegate%') AS col3, 
    (SELECT wp_postmeta.meta_value AS version FROM wp_postmeta WHERE wp_postmeta.meta_key='content_version' AND post_id=1 LIMIT 1) as col4 
    FROM 
    wp_posts 
    WHERE post_status='publish' 

Надеется, что это помогает

+0

Спасибо @SubinCPoonamgode. Я нашел пару ошибок в вашем примере, исправил их и, похоже, работает нормально. – qqruza

1

Попробуйте это

select(
    select 
    sum(case when post_type='updates' AND post_status='publish' then 1 else 0 end) from wp_posts) as '1Query', 
    (select 
sum(case when post_type='post' AND post_status='publish' then 1 else 0 end) as '2Query' 
    from wp_posts), 
    (select 
    SUM(CASE WHEN wp_usermeta.meta_value LIKE '%delegate%' THEN 1 ELSE 0 END) AS users 
    FROM wp_usermeta) as Users, 
    (
    SELECT wp_postmeta.meta_value AS version FROM wp_postmeta WHERE wp_postmeta.meta_key='content_version' AND post_id=1)as Version 
+0

Привет @ user3600910 У меня есть ошибка # 1064 - У вас есть ошибка в синтаксисе SQL; – qqruza

+0

ok, попробуйте сейчас, возникла проблема с синтаксисом – user3600910

+0

Еще одна ошибка - # 1241 - Операнд должен содержать 1 столбец – qqruza

Смежные вопросы