Сообщений: 27
Тем: 4
Зарегистрирован: Dec 2012
Репутация:
-113
Все в мире относительно )
Сообщений: 438
Тем: 12
Зарегистрирован: Aug 2010
Репутация:
2,935
offtop
Speed1 Написал:Основы мускула я знаю.
Я могу написать простенькие запросы, что то отредактировать ручками. По этой теме заметно. :facepalm:
Сообщений: 247
Тем: 3
Зарегистрирован: Feb 2012
Репутация:
1,300
Неверный Написал:Вот Вам пример сложного запроса на топ альянсов делал:
[SRC="sql"]SELECT ally_name AS NS_allyName, ally_crest_id AS NS_allyCrestId, ally_id AS NS_allyId, characters.char_name AS NS_leaderName, characters.online, cd.count AS NS_players
FROM clan_data
LEFT JOIN characters ON clan_data.leader_id = characters.charId
LEFT JOIN (
SELECT ally_id AS ad, COUNT(*) AS count
FROM clan_data
LEFT JOIN characters ON clan_data.clan_id = characters.clanid
GROUP BY ad
) AS cd ON clan_data.ally_id = cd.ad
WHERE clan_id=ally_id AND characters.accesslevel=0
ORDER BY cd.count DESC
LIMIT {LIMIT}[/SRC]
Или вот для форума делал подробный запрос:
[SRC="sql"]
SELECT tid, {$prf}topics.title, starter_name, {$prf}topics.last_poster_name, start_date, {$prf}topics.last_post, {$prf}topics.forum_id,
{$prf}posts.post, {$prf}posts.author_id, {$prf}posts.pid,
{$prf}members.member_id,
{$prf}forums.name
FROM {$prf}topics
LEFT JOIN {$prf}posts ON {$prf}topics.tid = {$prf}posts.topic_id AND {$prf}topics.last_post = {$prf}posts.post_date
LEFT JOIN {$prf}members ON {$prf}topics.last_poster_name = {$prf}members.name
LEFT JOIN {$prf}forums ON {$prf}topics.forum_id = {$prf}forums.id
WHERE approved='1' $invisCategory
ORDER BY {$prf}topics.last_post DESC
LIMIT {$cfg['forum']['maxList']}[/SRC]
Где вы тут увидели сложный запрос?
Ну вот Вам вот такой:
Код
[SRC="sql"]
SELECT `db_armorsets`.`id` AS `set_id`, `db_armor`.`crystal_type` AS `grade`,
`skillname`.`name` AS `set_name`, `skillname`.`desc` AS `set_description`, `skillicon`.`icon` AS `skill_icon`,
`shield_skillname`.`name` AS `shield_set_name`, `shield_skillname`.`desc` AS `shield_set_description`, `shield_skillicon`.`icon` AS `shield_skill_icon`,
`ench_skillname`.`name` AS `ench_set_name`, `ench_skillname`.`desc` AS `ench_set_description`, `ench_skillicon`.`icon` AS `ench_skill_icon`,
`p2skillname`.`name` AS `p2_name`, `p2skillname`.`desc` AS `p2_description`, `p2_skillicon`.`icon` AS `p2_icon`,
`p3skillname`.`name` AS `p3_name`, `p3skillname`.`desc` AS `p3_description`, `p3_skillicon`.`icon` AS `p3_icon`,
`p4skillname`.`name` AS `p4_name`, `p4skillname`.`desc` AS `p4_description`, `p4_skillicon`.`icon` AS `p4_icon`,
`db_armorsets`.`chest` AS `chest_id`, `chestname`.`name` AS `chest_name`, `chestitem`.`pic` AS `chest_icon`, `chestname`.`additional_name` AS `set_class`,
`db_armorsets`.`legs` AS `legs_id`, `legsname`.`name` AS `legs_name`, `legsitem`.`pic` AS `legs_icon`,
`db_armorsets`.`head` AS `head_id`, `headname`.`name` AS `head_name`, `headitem`.`pic` AS `head_icon`,
`db_armorsets`.`gloves` AS `gloves_id`, `glovesname`.`name` AS `gloves_name`, `glovesitem`.`pic` AS `gloves_icon`,
`db_armorsets`.`feet` AS `feet_id`, `feetname`.`name` AS `feet_name`, `feetitem`.`pic` AS `feet_icon`,
`db_armorsets`.`shield` AS `shield_id`, `shieldname`.`name` AS `shield_name`, `shielditem`.`pic` AS `shield_icon`
FROM `db_armor`, `db_armorsets`
LEFT JOIN `db_skillname-#session->l2lang#` AS `skillname` ON `skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`skill`, 1, LOCATE(';', `db_armorsets`.`skill`) - 1) AND `skillname`.`level` = SUBSTRING(`db_armorsets`.`skill`, LOCATE(';', `db_armorsets`.`skill`) + 1)
LEFT JOIN `db_skills` AS `skillicon` ON `skillicon`.`id` = `skillname`.`skill_id` AND `skillicon`.`level` = `skillname`.`level`
LEFT JOIN `db_skillname-#session->l2lang#` AS `shield_skillname` ON `shield_skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`shield_skill`, 1, LOCATE(';', `db_armorsets`.`shield_skill`) - 1) AND `shield_skillname`.`level` = SUBSTRING(`db_armorsets`.`shield_skill`, LOCATE(';', `db_armorsets`.`shield_skill`) + 1)
LEFT JOIN `db_skills` AS `shield_skillicon` ON `shield_skillicon`.`id` = `shield_skillname`.`skill_id` AND `shield_skillicon`.`level` = `shield_skillname`.`level`
LEFT JOIN `db_skillname-#session->l2lang#` AS `ench_skillname` ON `ench_skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`enchant6skill`, 1, LOCATE(';', `db_armorsets`.`enchant6skill`) - 1) AND `ench_skillname`.`level` = SUBSTRING(`db_armorsets`.`enchant6skill`, LOCATE(';', `db_armorsets`.`enchant6skill`) + 1)
LEFT JOIN `db_skills` AS `ench_skillicon` ON `ench_skillicon`.`id` = `ench_skillname`.`skill_id` AND `ench_skillicon`.`level` = `ench_skillname`.`level`
LEFT JOIN `db_skillname-#session->l2lang#` AS `p2skillname` ON `p2skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`parts2skill`, 1, LOCATE(';', `db_armorsets`.`parts2skill`) - 1) AND `p2skillname`.`level` = SUBSTRING(`db_armorsets`.`parts2skill`, LOCATE(';', `db_armorsets`.`skill`) + 1)
LEFT JOIN `db_skills` AS `p2_skillicon` ON `p2_skillicon`.`id` = `p2skillname`.`skill_id` AND `p2_skillicon`.`level` = `p2skillname`.`level`
LEFT JOIN `db_skillname-#session->l2lang#` AS `p3skillname` ON `p3skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`parts3skill`, 1, LOCATE(';', `db_armorsets`.`parts3skill`) - 1) AND `p3skillname`.`level` = SUBSTRING(`db_armorsets`.`parts3skill`, LOCATE(';', `db_armorsets`.`skill`) + 1)
LEFT JOIN `db_skills` AS `p3_skillicon` ON `p3_skillicon`.`id` = `p3skillname`.`skill_id` AND `p3_skillicon`.`level` = `p3skillname`.`level`
LEFT JOIN `db_skillname-#session->l2lang#` AS `p4skillname` ON `p4skillname`.`skill_id` = SUBSTRING(`db_armorsets`.`parts4skill`, 1, LOCATE(';', `db_armorsets`.`parts4skill`) - 1) AND `p4skillname`.`level` = SUBSTRING(`db_armorsets`.`parts4skill`, LOCATE(';', `db_armorsets`.`skill`) + 1)
LEFT JOIN `db_skills` AS `p4_skillicon` ON `p4_skillicon`.`id` = `p4skillname`.`skill_id` AND `p4_skillicon`.`level` = `p4skillname`.`level`
LEFT JOIN `db_itemname-#session->l2lang#` AS `chestname` ON `chestname`.`item_id` = `db_armorsets`.`chest`
LEFT JOIN `db_items` AS `chestitem` ON `chestitem`.`id` = `db_armorsets`.`chest`
LEFT JOIN `db_itemname-#session->l2lang#` AS `legsname` ON `legsname`.`item_id` = `db_armorsets`.`legs`
LEFT JOIN `db_items` AS `legsitem` ON `legsitem`.`id` = `db_armorsets`.`legs`
LEFT JOIN `db_itemname-#session->l2lang#` AS `headname` ON `headname`.`item_id` = `db_armorsets`.`head`
LEFT JOIN `db_items` AS `headitem` ON `headitem`.`id` = `db_armorsets`.`head`
LEFT JOIN `db_itemname-#session->l2lang#` AS `glovesname` ON `glovesname`.`item_id` = `db_armorsets`.`gloves`
LEFT JOIN `db_items` AS `glovesitem` ON `glovesitem`.`id` = `db_armorsets`.`gloves`
LEFT JOIN `db_itemname-#session->l2lang#` AS `feetname` ON `feetname`.`item_id` = `db_armorsets`.`feet`
LEFT JOIN `db_items` AS `feetitem` ON `feetitem`.`id` = `db_armorsets`.`feet`
LEFT JOIN `db_itemname-#session->l2lang#` AS `shieldname` ON `shieldname`.`item_id` = `db_armorsets`.`shield`
LEFT JOIN `db_items` AS `shielditem` ON `shielditem`.`id` = `db_armorsets`.`shield`
WHERE `db_armorsets`.`chest` = `db_armor`.`item_id` AND `db_armor`.`armor_type` = '#get->type#' AND `db_armor`.`crystal_type` = '#get->grade#' AND `db_armor`.`name` NOT LIKE '%Silver Satin%' AND `db_armor`.`name` NOT LIKE '%PvP%'
ORDER BY `db_armor`.`crystal_type` ASC, `db_armor`.`armor_type` ASC
[/src]
Но это тоже простой запрос - кучу LEFT JOIN-ов нельзя назвать сложным запросом, Вы не видели, наверное, какие запросы бывают в крупных организациях, где иногда результатом выполнения является 100+ полей, объединенных по нетривиальным условиям.
А все к тому, что у каждого человека порог знаний свой, зачем топикстартеру показывать сложные запросы? Понятное дело, что он ничего не поймет в них, т.к. не изучал тему.
// aka Deft
Сообщений: 1,317
Тем: 115
Зарегистрирован: Sep 2012
Репутация:
3,925
Yorie, ну там кол-во лефт джоинов, а у меня не просто, там еще вложение сложное есть. Попробуй разбери
Сообщений: 233
Тем: 22
Зарегистрирован: Dec 2010
Репутация:
236
Тсу: Вы меня конечно извините, но такая тема создана Вами исключительно из лени. Если Вы говорите, что можете написать простой запрос, то что Вам мешало для примера создать простой для одного Рб с инсертом? Или же просто вытащить уже готовую строчку из дроп листа и изменить в ней данные под себя? Да, это долго и глупо и есть способы на много проще и автоматизированнее. Но если знаний на это не хватает и изучать мускул (хотя можно просто проявить не много сообразительности, взять шавровые запросы с выборкой и сделать по аналогии) Вы не хотите, то что это тогда? Разве не лень?
|