RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Примеры MySQL запросов для Joomla

Выбрать всех пользователей

SELECT * FROM jos_users

Показать все опубликованные статьи:

SELECT * FROM jos_content
WHERE state = '1' 

Показать всех пользователей кроме "admin"

SELECT * FROM jos_users
WHERE username <> 'admin'

В предыдущих выражениях знак звездочки (*) обозначает показывать все столбцы. Теперь если мы хотим показать только email пользователей, выражение будет выглядеть так:

SELECT name, email FROM jos_users

Показать заголовки только опубликованных разделов

SELECT title FROM jos_sections
WHERE published = 1

Примечание: Указывать (*) несомненно удобно, но на практике запросы начинают использовать больше оперативной памяти, и как следствие производительность начинает падать. Выбирайте только необходимые данные, это упростит вам жизнь в дальнейшем.


Сортировка данных в MySQL

Для того чтобы выводить данные в определенном порядке, а не в том как они лежат в базе данных, используем конструкцию "ORDER BY", например сортировка id по возрастанию

SELECT * FROM jos_content
WHERE state ='1'
ORDER BY id ASC

или по убыванию id

SELECT * FROM jos_content
WHERE state ='1'
ORDER BY id DESC

так же никто не мешает сделать несколько сортировок (в порядке убывания приоритета)

SELECT * FROM jos_categories
ORDER BY published ASC, section ASC, id DESC


Ограничение вывода

Выведем 10 строк из таблицы jos_content

SELECT * FROM jos_content
LIMIT 0, 10

Для того чтобы чтобы выбрать начиная с 5 записи следующие 20, пишем следующее

SELECT * FROM jos_content
LIMIT 5, 20


Логические операторы SQL

MySQL поддерживает логические операторы, например выберем все материалы, старше 20 сентября 2008 года:

SELECT * FROM jos_content
WHERE state = '1'
AND created < '2008-09-20 00:00:00'

Усложним выбор несколькими условиями, кол-во просмотров не более чем 2000 и не меньше 1000:

SELECT * FROM jos_content
WHERE state = '1'
AND hits > '1000'
AND hits < '2000'
AND created < '2008-09-20 00:00:00'

И по традиции можно использовать скобки, чтобы явно указать приоритет среди сравнений:

SELECT * FROM jos_content
WHERE (sectionid = '5' OR sectionid = '6')
AND created < '2009-08-20 00:00:00'
ORDER BY created DESC
LIMIT 0, 10


Работа с текстом в MySQL

До этого мы оперировали только с числовыми типами данных, теперь попробуем с текстом. Из всех пользователей найдем только тех, имя которых начинаются на "a".

SELECT username
FROM jos_users
WHERE username LIKE 'a%'

Или заканчиваются на "о"

SELECT id,email,usertype
FROM jos_users
WHERE username LIKE '%о' 


Функции MySQL

Кроме того есть набор встроенных в MySQL функций. Названия говорят сами за себя

SELECT AVG(hits) FROM jos_content
SELECT COUNT(*) FROM jos_content
SELECT MAX(hits) FROM jos_content
SELECT SUM(hits) FROM jos_content

К тому же эти функции можно использовать вместе с группировкой. Подсчитаем кол-во хитов для каждого из раздела, упорядочим по убыванию

SELECT sectionid, SUM(hits) AS hits.
FROM jos_content
GROUP BY sectionid
ORDER BY hits DESC


Вложенные запросы SQL

Допустим мы хотим использовать в своем запросе поле, которое определено в другой таблице. Например выберем все страницы, которые не выведены на главную

SELECT id, name
FROM jos_content
WHERE id NOT IN (SELECT content_id FROM jos_content_frontpage)


Объединения в MySQL

Применяются объединения когда нужно использовать данные более чем из одной таблицы. Выборка имени материала с категорией, таблицы объединены по соответствующим id. Чтобы избежать двусмысленности мы приписываем названия таблиц к имени поля через точку.

SELECT jos_categories.title, jos_content.title
FROM jos_content
JOIN jos_categories ON jos_content.catid = jos_categories.id
ORDER BY jos_categories.id

Дополнительно используем таблицу с jos_users, чтобы узнать имя автора материала.

SELECT jos_categories.title, jos_content.title, jos_users.username
FROM jos_content
JOIN jos_categories ON jos_content.catid = jos_categories.id
JOIN jos_users ON jos_content.created_by = jos_users.id
ORDER BY jos_categories.id

Теперь используем все накопленные знания в одном примере

SELECT jos_categories.title, jos_content.title, jos_users.username
FROM jos_content
JOIN jos_categories ON jos_content.catid = jos_categories.id
JOIN jos_users ON jos_content.created_by = jos_users.id
WHERE jos_content.state = '1'
AND jos_content.hits > '10'
AND jos_content.id NOT IN (SELECT content_id FROM jos_content_frontpage)
ORDER BY jos_categories.id

Смотрите также:
Комментарии (39) Добавить комментарий
  • ArtIrinka
    ArtIrinka
    06 Февраля 2012, 18:18
     ↑  +3  ↓     ответ

    У меня при запросе SELECT * FROM #__yy

    выводится почему-то только первый id (хотя должны выводиться все значения таблицы)

    сама функция выглядит так:

    $db =& JFactory::getDBO();

    $query = 'SELECT * FROM #__yy';

    $db->setQuery( $query );

    $xx = $db->loadResult();

    return $xx;

    Может здесь нужно цикл добавить?

    • Aventurier
      Aventurier
      08 Марта 2012, 05:55
       ↑  +3  ↓     ответ

      Вам надо было в предпоследней строке вместо

      $xx = $db->loadResult();

      вывести

      $xx = $db->loadObjectList();

  • ArtIrinka
    ArtIrinka
    13 Марта 2012, 12:57
     ↑  0  ↓     ответ

    Спасибо большое

  • Максим
    Максим
    18 Июля 2012, 22:23
     ↑  0  ↓     ответ

    Огромное спасибо. Очень помогло в создании запросов.

    Остальные статьи тоже хороши лаконичностью и обилием примеров.

  • Андрей
    Андрей
    24 Октября 2012, 16:36
     ↑  0  ↓     ответ

    Здравствуйте

    подскажите, как составить запрос (в phpmyadmin),

    если я хочу очистить (заменить на 0) значение всех полей `hits` в таблице `jos_content`,

    то есть обнулить счетчик просмотров материалов

  • Nen
    Nen
    26 Декабря 2012, 00:58
     ↑  0  ↓     ответ

    Ничего из написанного не работает

  • IVan
    IVan
    06 Мая 2013, 00:45
     ↑  +1  ↓     ответ

    С построение запросов нет проблем.

    НО! Но где их вводить в Joomla?

    Через PhpMyAdmin? - ну там это понятно, а в Joomla есть такая возможность?

    (На примере, как в NetCat)

    • Александр
      Александр
      20 Ноября 2013, 19:33
       ↑  -3  ↓     ответ

      После таких вопросов возникает самый главный....А зачем читать подобные статьи если незнаишь длячего они и куда "вставить", как бы сам пункт меню называется "програмистам"

  • Alena
    Alena
    22 Февраля 2014, 05:15
     ↑  0  ↓     ответ

    Здравствуйте! Подскажите как выбрать материалы с одинаковым ALIAS? Благодарю!

  • usemind
    usemind
    01 Апреля 2014, 01:53
     ↑  0  ↓     ответ

    благодарю за столь понятные и полноценные объяснения!

  • ыв
    ыв
    06 Октября 2014, 16:21
     ↑  0  ↓     ответ

    Кака drop table сделать?

  • Александр
    Александр
    11 Декабря 2014, 21:14
     ↑  0  ↓     ответ

    Ругается на LIMIT и не работает цикл. Помогите поправить

    В цикле выводит или одну и туже картинку или просто "i"

    $q ="SELECT vm.`file_url_thumb`

    FROM `#__virtuemart_medias` vm

    LEFT JOIN `#__virtuemart_product_medias` vpm ON vpm.`virtuemart_media_id` = vm.`virtuemart_media_id`

    WHERE vpm.`virtuemart_product_id`='".$product->virtuemart_product_id."'

    LIMIT 0, 10

    AND vm.`file_mimetype` LIKE 'image/%'

    ORDER BY vm.`file_is_product_image` DESC ";

    $db->setQuery($q); //1. Установим этот запрос в экземпляр класса работы с базами данных

    $db->query(); //2. Выполним запрос

    echo ' '.$db->getAffectedRows ().''; //3. Посмотрим сколько было задействовано строк

    $thumburl = $db->loadResult();

    if(!$thumburl)

    $thumburl = 'components/com_virtuemart/assets/images/vmgeneral/'.VmConfig::get('no_image_set');

    echo '<div class="browsecellwidth">';

    echo $product->virtuemart_vendor_id;

    echo '<div class="compaign-name"><h6><a href="'.$product_url.'" >'.ucfirst($product->product_name).'</a></h6></div>';

    echo '<div class="holder-compaign-avatar"><div class="slider"><div class="slides">';

    $count_images = $db->getAffectedRows ();

    echo $count_images;

    if ($count_images = 10) {

    for ($i = 1; $i < 10; $i++)

    {

    $img = $thumburl[$i];

    echo '<div class="slide"><a href="'.$juri.$img.'" alt="'.ucfirst($product->product_name).'" data-lightbox="roadtrip['.ucfirst($product->product_name).']" tite="'.ucfirst($product->product_s_desc).'" data-title="'.ucfirst($product->product_s_desc).'"><img src="'.$juri.$img.'" class="compaign-avatar"></a></div>';

    }

    } else {

    for ($i = 0; $i < $count_images; $i++)

    {

    $img = $thumburl[$i];

    echo '<div class="slide"><a href="'.$juri.$img.'" alt="'.ucfirst($product->product_name).'" data-lightbox="roadtrip['.ucfirst($product->product_name).']" tite="'.ucfirst($product->product_s_desc).'" data-title="'.ucfirst($product->product_s_desc).'"><img src="'.$juri.$img.'" class="compaign-avatar"></a></div>';

  • Rx 2 Go Pharmacy
    Rx 2 Go Pharmacy
    04 Июля 2018, 03:39
     ↑  0  ↓     ответ

    I know this if off topic but I'm looking into starting my own blog and was wondering what all is needed to get setup?

    I'm assuming having a blog like yours would cost a pretty penny?

    I'm not very web savvy so I'm not 100% sure.

    Any tips or advice would be greatly appreciated. Many thanks

  • tinyurl.com
    tinyurl.com
    23 Ноября 2019, 19:32
     ↑  0  ↓     ответ

    It's in fact very complicated in this full of activity life to listen news on TV,

    so I simply use internet for that purpose, and get the most

    up-to-date information.

  • tinyurl.com
    tinyurl.com
    25 Ноября 2019, 06:01
     ↑  0  ↓     ответ

    Remarkable! Its in fact remarkable piece of writing, I have got much clear idea concerning from this piece of

    writing.

  • then coconut oil
    then coconut oil
    26 Ноября 2019, 05:46
     ↑  0  ↓     ответ

    bookmarked!!, I love your web site!

  • plenty of fish dating site
    plenty of fish dating site
    26 Ноября 2019, 14:47
     ↑  0  ↓     ответ

    Your mode of describing the whole thing in this paragraph is genuinely pleasant,

    all can effortlessly be aware of it, Thanks a lot.

  • best web hosting 2020
    best web hosting 2020
    09 Августа 2020, 00:20
     ↑  0  ↓     ответ

    Good post! We will be linking to this particularly

    great content on our website. Keep up the good writing.

  • adreamoftrains webhosting
    adreamoftrains webhosting
    09 Августа 2020, 11:32
     ↑  0  ↓     ответ

    My brother recommended I would possibly like this blog. He used to be totally right.

    This put up actually made my day. You cann't imagine just how so much time I had spent for this info!

    Thanks! adreamoftrains web hosting

  • hdpcteszm
    hdpcteszm
    05 Сентября 2020, 21:15
     ↑  0  ↓     ответ

    Примеры MySQL запросов для Joomla / Создание компонентов .:. Документация Joomla! CMS

    hdpcteszm gx7t06iho1l1n79av7fb4r4zc900u379s.org/

    <a href="/ gx7t06iho1l1n79av7fb4r4zc900u379s.org/ ">ahdpcteszm</a>

    [url= gx7t06iho1l1n79av7fb4r4zc900u379s.org/ ]uhdpcteszm[/url]

  • ydqnknhwb
    ydqnknhwb
    07 Сентября 2020, 01:53
     ↑  0  ↓     ответ

    Примеры MySQL запросов для Joomla / Создание компонентов .:. Документация Joomla! CMS

    ydqnknhwb g95200p3frlm17q8h034wsgyt9s915les.org/

    <a href="/ g95200p3frlm17q8h034wsgyt9s915les.org/ ">aydqnknhwb</a>

    [url= g95200p3frlm17q8h034wsgyt9s915les.org/ ]uydqnknhwb[/url]

  • thmvyogid
    thmvyogid
    10 Сентября 2020, 02:39
     ↑  0  ↓     ответ

    Примеры MySQL запросов для Joomla / Создание компонентов .:. Документация Joomla! CMS

    [url= g91t5y7b845bk8w01yau7yf69s2k54czs.org/ ]uthmvyogid[/url]

    thmvyogid g91t5y7b845bk8w01yau7yf69s2k54czs.org/

    <a href="/ g91t5y7b845bk8w01yau7yf69s2k54czs.org/ ">athmvyogid</a>

  • swlygnxxy
    swlygnxxy
    10 Сентября 2020, 04:15
     ↑  0  ↓     ответ

    Примеры MySQL запросов для Joomla / Создание компонентов .:. Документация Joomla! CMS

    swlygnxxy gj0rzpdk69myw88j8k006628k070md9ks.org/

    <a href="/ gj0rzpdk69myw88j8k006628k070md9ks.org/ ">aswlygnxxy</a>

    [url= gj0rzpdk69myw88j8k006628k070md9ks.org/ ]uswlygnxxy[/url]

  • hnzsvlqmdn
    hnzsvlqmdn
    08 Апреля 2021, 14:24
     ↑  0  ↓     ответ

    Примеры MySQL запросов для Joomla / Создание компонентов .:. Документация Joomla! CMS

    <a href="/ gd356dtadc6kp45207j293lhmxzr3714s.org/ ">ahnzsvlqmdn</a>

    hnzsvlqmdn gd356dtadc6kp45207j293lhmxzr3714s.org/

    [url= gd356dtadc6kp45207j293lhmxzr3714s.org/ ]uhnzsvlqmdn[/url]

  • http://tinyurl.com/ydf35f7k
    http://tinyurl.com/ydf35f7k
    27 Марта 2022, 06:19
     ↑  0  ↓     ответ

    Ahaa, its fastidious conversation regarding this paragraph at this place at this blog, I have read all that, so now me also commenting here.

  • http://tinyurl.com
    http://tinyurl.com
    30 Марта 2022, 04:59
     ↑  0  ↓     ответ

    Hi, Neat post. There is a problem with your site

    in internet explorer, could check this? IE

    still is the market leader and a big part of other folks

    will leave out your excellent writing due to this problem.

  • cheapest international airline tickets possible
    cheapest international airline tickets possible
    02 Апреля 2022, 17:34
     ↑  0  ↓     ответ

    I like the valuable information you provide in your articles.

    I will bookmark your weblog and check again here regularly.

    I'm quite certain I'll learn many new stuff right

    here! Best of luck for the next!

  • how to get cheap flights
    how to get cheap flights
    03 Апреля 2022, 20:41
     ↑  0  ↓     ответ

    Thanks designed for sharing such a nice idea, paragraph is nice, thats why i have read it entirely

  • cheapest international airline tickets possible
    cheapest international airline tickets possible
    04 Апреля 2022, 02:01
     ↑  0  ↓     ответ

    For newest information you have to pay a visit world-wide-web and on web I found this web page as a most excellent site for hottest updates.

  • air tickets
    air tickets
    04 Апреля 2022, 19:05
     ↑  0  ↓     ответ

    Hi, I would like to subscribe for this weblog to get latest updates, thus where can i do it please assist.

  • cheap flights domestic
    cheap flights domestic
    05 Апреля 2022, 06:36
     ↑  0  ↓     ответ

    Keep on working, great job!

  • airline tickets best price
    airline tickets best price
    05 Апреля 2022, 23:09
     ↑  0  ↓     ответ

    Hi! I could have sworn I've been to this website before but after browsing through some of the post I realized it's new to me.

    Anyways, I'm definitely glad I found it and I'll be bookmarking and checking

    back often!

  • flight ticket booking
    flight ticket booking
    06 Апреля 2022, 07:29
     ↑  0  ↓     ответ

    This info is priceless. When can I find out more?

  • extremely low airfares
    extremely low airfares
    06 Апреля 2022, 18:49
     ↑  0  ↓     ответ

    I really like it when folks get together and share views.

    Great blog, continue the good work!

  • gamefly
    gamefly
    07 Апреля 2022, 06:24
     ↑  0  ↓     ответ

    Thanks for sharing your info. I really appreciate your efforts and I will

    be waiting for your next post thank you once again.

  • gamefly
    gamefly
    10 Апреля 2022, 23:06
     ↑  0  ↓     ответ

    Very quickly this site will be famous among all blogging and site-building users, due to it's pleasant posts

  • tinyurl.com
    tinyurl.com
    10 Мая 2022, 11:21
     ↑  0  ↓     ответ

    Highly descriptive article, I liked that bit.

    Will there be a part 2?

  • http://tinyurl.com/
    http://tinyurl.com/
    12 Мая 2022, 02:37
     ↑  0  ↓     ответ

    Hello to all, the contents existing at this site are in fact remarkable for people knowledge,

    well, keep up the nice work fellows.

  • tinyurl.com
    tinyurl.com
    16 Мая 2022, 21:35
     ↑  0  ↓     ответ

    What's up to all, the contents present at this website are really

    remarkable for people knowledge, well, keep up the good work fellows.

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.