У меня есть оператор SQL, который возвращает строки:
SELECT DISTINCT wp_w2bw2c_event.venue_id,
(SELECT MIN(begin_date)
FROM wp_w2bw2c_event_detail
WHERE wp_w2bw2c_event_detail.event_id = wp_w2bw2c_event.id)
as begin_date,
wp_w2bw2c_event.id as event_id
FROM wp_w2bw2c_event
INNER JOIN wp_w2bw2c_venue
ON wp_w2bw2c_venue.id = wp_w2bw2c_event.venue_id
INNER JOIN wp_w2bw2c_event_detail
ON wp_w2bw2c_event_detail.event_id = wp_w2bw2c_event.id
WHERE wp_w2bw2c_venue.venue_name LIKE '%ironworks%'
OR artist_name LIKE '%ironworks%'
OR event_title LIKE '%ironworks%'
OR event_detail_title LIKE '%ironworks%'
ORDER BY wp_w2bw2c_event.venue_id, begin_date, event_id
Если я попытаюсь использовать функцию COUNT
чтобы просто подсчитать количество строк, я получаю ошибку базы данных SQL
SELECT COUNT(DISTINCT wp_w2bw2c_event.venue_id,
(SELECT MIN(begin_date)
FROM wp_w2bw2c_event_detail
WHERE wp_w2bw2c_event_detail.event_id = wp_w2bw2c_event.id)
as begin_date,
wp_w2bw2c_event.id as event_id)
FROM wp_w2bw2c_event
INNER JOIN wp_w2bw2c_venue
ON wp_w2bw2c_venue.id = wp_w2bw2c_event.venue_id
INNER JOIN wp_w2bw2c_event_detail
ON wp_w2bw2c_event_detail.event_id = wp_w2bw2c_event.id
WHERE wp_w2bw2c_venue.venue_name LIKE '%ironworks%'
OR artist_name LIKE '%ironworks%'
OR event_title LIKE '%ironworks%'
OR event_detail_title LIKE '%ironworks%'
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'as begin_date,
wp_w2bw2c_event.id as event_id
FROM wp_w2bw2c_event
INNE' at line 5
Как я могу изменить SQL так, чтобы COUNT(DISTINCT...
работал с результатом SELECT?
Ваш запрос возвращает отдельные строки. Итак, все, что вам нужно сделать, это подсчитать результаты этого запроса:
select count(*) from (your query) q;
#1248 - Every derived table must have its own alias
. Даже когда я совмещал имена всех таблиц, я все равно получал эту ошибку.
То, что вы пытаетесь, излишне сложно. Что не так с простым способом?
select venueId
, min(begin_date) minBeginDate
from etc
where whatever
group by venueId
Это даст вам отличные значения.