Вы можете использовать аналитическую функцию COUNT
, которая не потребует от вас самостоятельного объединения на вашем столе.
Oracle Setup :
CREATE TABLE USER_EVENTS ( ID, EVENT_TYPE, EVENT_DATE, USER_ID ) AS
SELECT 1, 'USER_DELETED', DATE '2019-01-10', 5301 FROM DUAL UNION ALL
SELECT 2, 'USER_ACTIVATED', DATE '2019-01-09', 5301 FROM DUAL UNION ALL
SELECT 3, 'USER_DELETED', DATE '2019-01-05', 5302 FROM DUAL UNION ALL
SELECT 4, 'USER_ACTIVATED', DATE '2019-01-11', 5302 FROM DUAL UNION ALL
SELECT 5, 'USER_DELETED', DATE '2019-01-01', 5288 FROM DUAL UNION ALL
SELECT 6, 'USER_DELETED', DATE '2019-01-02', 5287 FROM DUAL UNION ALL
SELECT 7, 'USER_CREATED', DATE '2018-12-01', 5211 FROM DUAL UNION ALL
SELECT 8, 'USER_NOTE', DATE '2018-12-01', 5211 FROM DUAL;
Запрос 1 :
SELECT *
FROM (
SELECT u.*,
COUNT( CASE event_type WHEN 'USER_ACTIVATED' THEN 1 END )
OVER (
PARTITION BY user_id
ORDER BY event_date
ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING
) AS num_activated
FROM USER_EVENTS u
)
WHERE num_activated > 0
AND event_type = 'USER_DELETED';
Результаты :
ID | EVENT_TYPE | EVENT_DATE | USER_ID | NUM_ACTIVATED
-: | :----------- | :--------- | ------: | ------------:
3 | USER_DELETED | 05-JAN-19 | 5302 | 1
Запрос 2 :
Если вы просто хотите, чтобы затронутые USER_ID
с, вы можете использовать GROUP BY
и HAVING
:
SELECT USER_ID
FROM USER_EVENTS
GROUP BY USER_ID
HAVING MIN( CASE EVENT_TYPE WHEN 'USER_DELETED' THEN EVENT_DATE END )
< MIN( CASE EVENT_TYPE WHEN 'USER_ACTIVATED' THEN EVENT_DATE END )
[ 1117] Результаты :
| USER_ID | | ------: | | 5302 |
db <> fiddle здесь
1.: К "другому": радио-поле, добавляют a <input type="text" ...>
со стилем display:none и только отображают его, когда пользователь выбирает "другой": радио-поле.
Однако я не совсем уверен, работал ли № 2. Вы добрались бы rboption=other
от переключателя И rboption=some%20text
от текстового поля. Каждый будет обычно перезаписывать другой, но это не уверено который (читайте: зависит от положения на странице, браузере и фазе луны).
Безусловно, сделайте отличающееся имя текстового поля и только обработайте его когда rboption == 'other'
(как Соленый сказал),
Почему не только добавляют, что другое имя приписывает входу и только проверяет его, если другой переключатель был установлен?
Вот как я это сделал:
<input type="radio" name="phone" value="313-375-2151">Taylor <br>
<input type="radio" name="phone" value="555-444-1234">OverheadHts <br>
<input type="radio" name="phone" value="555-333-1234">Smith Ctr <br>
<input type="radio" name="phone" value="444-344-1234">Mainsville<br>
<input type="radio" name="phone" value="other">Other:
<input type="text" name="phone-other" size="14">
А затем, когда вы обрабатываете форму:
$phone = mysql_real_escape_string($_POST['phone']);
if ($phone =='other'){
$phone = mysql_real_escape_string($_POST['phone-other']);
}
и т. Д.