簡體   English   中英

如果條件為真,則選擇數據

[英]Selecting data if condition is true

我甚至為自己解決問題時遇到了問題,因此我創建了一個圖像,因為它更容易理解。

表結構: 在此輸入圖像描述

如果紅色字段為空且綠色字段為真,我想從藍色字段中選擇數據。 我該怎么做呢? 我已經和它搏斗了很長一段時間了。

無法更改表結構,因為它是從wordpress contactform7到數據庫插件。

我會非常感謝任何幫助:)

只是選擇一個電子郵件工作正常

SELECT field_value FROM wp_cf7dbplugin_submits WHERE field_name = 'your-email'

現在我只想選擇電子郵件,如果field_value =''WHERE field_name ='has-wp-user'..

所以我想要的是這樣的;

SELECT field_value FROM wp_cf7dbplugin_submits WHERE field_name = 'your-email' IF has-wp-user = 'false'

伊什。

這種方式有可能嗎?

表結構:

CREATE TABLE IF NOT EXISTS `wp_cf7dbplugin_submits` (
  `submit_time` decimal(16,4) NOT NULL,
  `form_name` varchar(127) CHARACTER SET utf8 DEFAULT NULL,
  `field_name` varchar(127) CHARACTER SET utf8 DEFAULT NULL,
  `field_value` longtext CHARACTER SET utf8,
  `field_order` int(11) DEFAULT NULL,
  `file` longblob,
  KEY `submit_time_idx` (`submit_time`),
  KEY `form_name_idx` (`form_name`),
  KEY `field_name_idx` (`field_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumpning av Data i tabell `wp_cf7dbplugin_submits`
--

INSERT INTO `wp_cf7dbplugin_submits` (`submit_time`, `form_name`, `field_name`, `field_value`, `field_order`, `file`) VALUES
('1387497601.8300', 'Bli medlem', 'has-wp-user', '', 0, NULL),
('1387497601.8300', 'Bli medlem', 'paid-membership-fee', 'true', 1, NULL),
('1387497601.8300', 'Bli medlem', 'your-name', 'Firstname Lastname ', 2, NULL),
('1387497601.8300', 'Bli medlem', 'your-email', 'email@mail.se', 3, NULL),
('1387497601.8300', 'Bli medlem', 'your-adress', 'theroad 12', 4, NULL),
('1387497601.8300', 'Bli medlem', 'your-zip', '76045', 5, NULL),
('1387497601.8300', 'Bli medlem', 'your-postal-area', 'postalarea', 6, NULL),
('1387497601.8300', 'Bli medlem', 'your-phonenumber', '0123456789', 7, NULL),
('1387497602.8300', 'Bli medlem', 'has-wp-user', '', 0, NULL),
('1387497602.8300', 'Bli medlem', 'paid-membership-fee', 'true', 1, NULL),
('1387497602.8300', 'Bli medlem', 'your-name', 'Firstname lastname', 2, NULL),
('1387497602.8300', 'Bli medlem', 'your-email', 'email@mail.se', 3, NULL),
('1387497602.8300', 'Bli medlem', 'your-adress', 'singövägen 156', 4, NULL),
('1387497602.8300', 'Bli medlem', 'your-zip', '76045', 5, NULL),
('1387497602.8300', 'Bli medlem', 'your-postal-area', 'grisslehamn', 6, NULL),
('1387497602.8300', 'Bli medlem', 'your-phonenumber', '0123456789', 7, NULL),
('1387584003.8300', 'Bli medlem', 'has-wp-user', '', 0, NULL),
('1387584003.8300', 'Bli medlem', 'paid-membership-fee', 'true', 1, NULL),
('1387584003.8300', 'Bli medlem', 'your-name', 'Firstname Lastname', 2, NULL),
('1387584003.8300', 'Bli medlem', 'your-email', 'email@mail.se', 3, NULL),
('1387584003.8300', 'Bli medlem', 'your-adress', 'gryta hagväg 6', 4, NULL),
('1387584003.8300', 'Bli medlem', 'your-zip', '76175', 5, NULL),
('1387584003.8300', 'Bli medlem', 'your-postal-area', 'norrtälje', 6, NULL),
('1387584003.8300', 'Bli medlem', 'your-phonenumber', '0123456789', 7, NULL),
('1387584004.8300', 'Bli medlem', 'has-wp-user', 'true', 0, NULL),
('1387584004.8300', 'Bli medlem', 'paid-membership-fee', '', 1, NULL),
('1387584004.8300', 'Bli medlem', 'your-name', 'Firstname Lastname', 2, NULL),
('1387584004.8300', 'Bli medlem', 'your-email', 'email@mail.se', 3, NULL),
('1387584004.8300', 'Bli medlem', 'your-adress', 'bergstigen 7', 4, NULL),
('1387584004.8300', 'Bli medlem', 'your-zip', '76192', 5, NULL),
('1387584004.8300', 'Bli medlem', 'your-postal-area', 'norrtälje', 6, NULL),
('1387584004.8300', 'Bli medlem', 'your-phonenumber', '0123456789', 7, NULL),
('1387584005.8300', 'Bli medlem', 'has-wp-user', '', 0, NULL),
('1387584005.8300', 'Bli medlem', 'paid-membership-fee', 'true', 1, NULL),
('1387584005.8300', 'Bli medlem', 'your-name', 'Firstname Lastname', 2, NULL),
('1387584005.8300', 'Bli medlem', 'your-email', 'email@mail.se', 3, NULL),
('1387584005.8300', 'Bli medlem', 'your-adress', 'robertsväg10 ', 4, NULL),
('1387584005.8300', 'Bli medlem', 'your-zip', '76045', 5, NULL),
('1387584005.8300', 'Bli medlem', 'your-postal-area', 'grisslehamn', 6, NULL),
('1387584005.8300', 'Bli medlem', 'your-phonenumber', '0123456789', 7, NULL);
select
*
from
my_table m inner join (
  select
  m.*
  from
  my_table m
  group by form_name, submit_time
  having sum(
    (field_name = 'has-wp-user' and field_value = '') 
    or 
    (field_name = 'paid-membership-fee' and field_value = 'true')
  ) = 2
) sq on m.form_name = sq.form_name and m.submit_time = sq.submit_time
where m.field_name in ('your-name', 'your-email');

其背后的想法是,每個field_name屬於一個組。 我在這里假設,它是form_name和submit_time列的組合。 有了這個子查詢

  select
  m.*
  from
  my_table m
  group by form_name, submit_time
  having sum(
    (field_name = 'has-wp-user' and field_value is null) 
    or 
    (field_name = 'paid-membership-fee' and field_value = 'true')
  ) = 2

然后,您只選擇那些form_names,其中field_name行具有-wp-user和paid-membership-fee,其值分別為null和true。 現在,您可以再次加入原始表,只過濾掉允許的form_names,並方便地選擇所需的行。

這不是最快的解決方案,因此如果性能是一個問題,我們可以解決這個問題。 否則,這就是我要做的......

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(submit_time DECIMAL(13,2)
,form_name VARCHAR(30) NOT NULL
,field_name VARCHAR(30) NOT NULL
,field_value VARCHAR(30) NOT NULL
,field_order INT NOT NULL
,file INT NULL
,PRIMARY KEY(submit_time,form_name,field_name)
);

INSERT INTO my_table VALUES
(1387497601.83,'Bli medlem','has-wp-user','',0,NULL),
(1387497601.83,'Bli medlem','paid-membership-fee','true',1,NULL),
(1387497601.83,'Bli medlem','your-name','Williamsson',2,NULL),
(1387497601.83,'Bli medlem','your-email','Williamsson@mail.com',3,NULL),
(1387497601.83,'Bli medlem','your-adress','',4,NULL),
(1387497601.83,'Bli medlem','your-zip','',5,NULL),
(1387497601.83,'Bli medlem','your-postal-area','',6,NULL),
(1387497601.83,'Bli medlem','your-phonenumber','',7,NULL);

CREATE VIEW v_my_table AS
SELECT submit_time
     , form_name
     , MAX(CASE WHEN field_name = 'has-wp-user' THEN field_value END) has_wp_user
     , MAX(CASE WHEN field_name = 'paid-membership-fee' THEN field_value END) paid_membership_fee
     , MAX(CASE WHEN field_name = 'your-name' THEN field_value END) your_name
     , MAX(CASE WHEN field_name = 'your-email' THEN field_value END) your_email
     , MAX(CASE WHEN field_name = 'your-adress' THEN field_value END) your_address
     , MAX(CASE WHEN field_name = 'your-zip' THEN field_value END) your_zip
     , MAX(CASE WHEN field_name = 'your-postal-area' THEN field_value END) your_postal_area
     , MAX(CASE WHEN field_name = 'your-phonenumber' THEN field_value END) your_phonenumber
  FROM my_table
 GROUP
    BY submit_time
     , form_name;

SELECT your_name
     , your_email 
  FROM v_my_table 
 WHERE has_wp_user = '' 
   AND paid_membership_fee = 'true';
+------------+----------------------+
| your_name  | your_email           |
+------------+----------------------+
| Williamsson| Williamsson@mail.com |
+------------+----------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM