товары, корзины и пользователи
SELECT
posts.id,
posts.name,
count(case when s_vk.social_name = 'vk' then 1 end) as count_vk,
count(case when s_vk.social_name = 'tg' then 1 end) as count_tg,
count(case when s_vk.social_name = 'ok' then 1 end) as count_ok,
count(case when s_vk.social_name = 'tw' then 1 end) as count_tw
FROM posts
LEFT JOIN socials as s_vk on s_vk.post_id = posts.id
GROUP BY posts.id, posts.name
select le.id, le.locationid, le.eventid,
led.event_date
from location_event le
join location_event_dates led on led.location_event_id = le.id
where led.event_date between :begin_date and :end_date
select n.*
from news as n
join news_relation as nr on (:id = nr.news_id_1 and n.id = nr.news_id_2) -- выявляем связь в одну сторону
or (:id = nr.news_id_2 and n.id = nr.news_id_1) -- выявляем связь в другую сторону
order by n.id desc
SELECT c.id, c.region,
(select count(*)
from `class_item` c2
where c.data <= c2.data-- знак будет влиять на направление нумерации
) as row_num
FROM `class_item` c
order by с.data desc
SELECT * FROM `products`
LEFT JOIN (SELECT `product`, `price`,
row_number() over (partition by `product` order by `id` desc) as price_rank
from `prices`) as prc on `products`.`id` = prc.`product`
and prc.price_rank = 1
limit 10
SELECT * FROM `products`
LEFT JOIN (SELECT `product`, `price`,
IF(@prev_id <> `product`, @p_rank := 0, @p_rank),
@prev_id := `product`,
@p_rank := @p_rank + 1 as price_rank -- определяем partition
from `prices`,
(SELECT @p_rank := 0) p_rank, -- начальное значение ранга
(SELECT @prev_id := -1) prev_id -- начальное значение товара (не должен быть в диапазоне сущ. id)
order by `product` asc,
`id` desc -- устанавливаем сортировку partition
) as prc on `products`.`id` = prc.`product`
and prc.price_rank = 1
limit 10
SELECT images.name,
GROUP_CONCAT(tags.tagname SEPARATOR ", ") AS tagname,
category.title,
a.category_tagname
FROM images
INNER JOIN images_tags ON images.id = images_tags.images_id
INNER JOIN tags ON images_tags.tags_id = tags.id
INNER JOIN category ON images.category_id = category.category_id
---------------------
join (SELECT category.category_id,
GROUP_CONCAT(tags.tagname SEPARATOR ", ") AS category_tagname
FROM images
INNER JOIN images_tags ON images.id = images_tags.images_id
INNER JOIN tags ON images_tags.tags_id = tags.id
INNER JOIN category ON images.category_id = category.category_id
GROUP BY category.category_id
) a on a.category_id = images.category_id
----------------------
WHERE images.category_id = 1
GROUP BY images.name, category.title, a.category_tagname
Или взять полученный массив $arrTable вытащить оттуда $arrTable[tagname], пересобрать, почистить от дубликатов и выводить уже его?
select u.*
from users u
where not exists(
select 999
from user_statuses us
where us.user_id = u.id
and us.status_id = 1
)
$this->db->select('инструктор, дата, SUM(длительность)');
$this->db->from('( SELECT DISTINCT инструктор, дата, начало, длительность
FROM таблица ) AS алиас');
$this->db->group_by(['инструктор', 'дата']);
$query = $this->db->get();
SELECT *
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.ID = t2.ID;
SELECT t1.*, t2.*
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.ID = t2.ID;
SELECT a.*, ai.name_img_file, ai.src, ai.title as img_title
FROM adverts as a
join advert_imgs as ai on a.id = ai.id_adv
WHERE 1 = 1
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'storey_apartament' AND af.field_value = '58')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'condition_house' AND af.field_value = '13')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'Sleeping'AND af.field_value = '38')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'Availability' AND af.field_value = '48')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'Bathroom' AND af.field_value = '77')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'Heating'AND af.field_value = '26')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'Furnished' AND af.field_value = '14')
AND exists( select 1 from adverts_fields af where a.id = af.id_advert and af.field_name = 'kitchen_area' AND af.field_value = '34')
ORDER BY `title` DESC
update table_name
set value = replace(value, char(код символа ¶), concat(char(код символа \r), char(код символа\n)))
select value,
replace(value, char(код символа ¶), concat(char(код символа \r), char(код символа\n))) as new_value
from table_name
$sql = "select ...
from ...
where 1 = 1
".(isset($_POST['status']) ? ' and medialib.status LIKE '.$_POST['status'] // тут сшили текст запроса и значение параметра (эти два слова нужно подчеркнуть)
: "")
$bind_params = [];
if(isset($_POST['status']))
$bind_params['status'] = $_POST['status'];
$sql = "select ...
from ...
where 1 = 1
".(isset($bind_params['status']) ? " and medialib.status LIKE :status " // тут сшили текст запроса со специальным маркером (может использоваться знак ? )
: "")
foreach($bind_params as $bind_param)
{
// тут привязываем каждое значение параметра с маркером в запросе через функцию bind_param (интерфейс и название функции зависит от библиотеки для соединения с базой данных)
}
<a href="?id=1">см. запись</a>
if(isset($_GET['id']))
{
// тут код или вызов функции для работы с одной записью
}
else
{
// тут код или вызов функции для вывода всего списка
}
msqli_prepare("текст запроса ... where id = ?"); // ставим в нужное место запроса параметрические метки
msqli_bind_param("i", $_GET["id"]); // передаем параметр на место меток-вопросов, в каком порядке они идут
msqi_execute();
// msqli_fetch функция и форматированный вывод сведений
// тут опущены действия связанные с формированием запроса,
// на этом этапе вы каким-то способом получили выборку данных из таблицы links
foreach($rows as $row)
{
echo '<a href="'.$row['link_href'].'" title="'.$row['link_title'].'">'.$row['link_text'].'</a><br/>';
}
update table_1 t1
set t1.column_1 = A
where exists (select 1 from table_2 t2 where t2.какой-то-связный-ключ-с-t1 = t1.какой-то-связный-ключ-с-t2 and t2.column_1 = B)
select * from messages m
where :from_id in (m.from_id, m.to_id)
and (select count(*)
from messages m2
where (m2.to_id = m.to_id and m2.from_id = m.from_id
or m2.to_id = m.from_id and m2.from_id = m.to_id)
and m2.id > m.id
) < 1
order by id desc
select * from messages m
where (m.to_id = :to_id and m.from_id = :from_id
or m.to_id = :from_id and m.from_id = :to_id)
order by id asc