En 1987 escribimos un "Cómo funciona" explicando cómo funciona el código de barras común (ART1570S). Ampliamente utilizado en una multiplicidad de usos y ya alertábamos para la venida del código bidimensional en el cual en un espacio más pequeño era posible poner más información. Un segundo artículo nuestro de 2004 se ocupó de los códigos bidimensionales que ya tenían como representativos el código QR que se hizo muy popular desde 94. En este artículo explicamos con más detalle esto, que ahora es uno de los códigos más populares utilizados con los teléfonos móviles.

QR Code viene de Quick Response o Respuesta Rápida, por lo que el QR Code es un código de respuesta rápida que consiste en un tipo de códigos de barras bidimensionales. Vea nuestro artículo para entender cómo funciona.

 

Este código fue creado en 1994 por la empresa japonesa Denso -Wave para controlar el estoque de piezas de una manera rápida y sencilla.

 

Con el desarrollo de las cámaras móviles cada vez más precisas el proceso de escaneo del código también se utilizó en estos dispositivos en 2003. La ventaja es que incluso los teléfonos móviles con cámaras no muy buenas pueden capturar las imágenes e interpretarlas.

 

Hoy en día el QR Code encuentra una infinidad de aplicaciones que van desde el pago de cuentas por teléfono celular, acceso a sitios web y correos electrónicos directamente, acceso a menús de restaurantes o catálogos de componentes, información técnica sobre componentes y mucho más.

 

Desde su lanzamiento se populariza el código y su uso, así como las aplicaciones que lo interpretan se han vuelto libres y pueden ser utilizados en cualquier aplicación e instalados en cualquier teléfono móvil.

 

 

CÓMO FUNCIONA

 

A diferencia de un código de barras común, como se muestra en la figura 1, el QR Code es un código bidimensional o 2D.

 

Figura 1 - Código de barras común 1 Dimensión (1D)
Figura 1 - Código de barras común 1 Dimensión (1D)

 

 

En este código, las informaciones están codificadas por el ancho y la separación de las barras según un código estandarizado, adoptado internacionalmente.

 

En el código de barras de dos dimensiones tenemos la representación de la información por pequeños rectángulos que forman un patrón de mosaico, como se muestra en la figura 2.

 

 

Figura 2 – El código bidimensional del QR Code
Figura 2 – El código bidimensional del QR Code | Clique na imagem para ampliar |

 

 

De esta manera, tomando como referencia las líneas del rectángulo, podemos leer la secuencia de regiones claras y oscuras convirtiéndolos en bits, como se muestra en la figura 3.

 

Figura 3 - Leyendo los datos
Figura 3 - Leyendo los datos

 

 

Existen varias versiones que pueden contener más o menos datos, ya que la cantidad de "cuadrados" se puede utilizar en la representación de datos.

 

Así que tenemos en la figura 4 algunas versiones con la cantidad de bits que pueden almacenar;

 

 

Figura 4 - Cuanto mayor sea el número de puntos mayor será la cantidad de información almacenada
Figura 4 - Cuanto mayor sea el número de puntos mayor será la cantidad de información almacenada | Clique na imagem para ampliar |

 

 

También existen versiones de 117 x 117 y 177 x 177 que permiten el almacenamiento de hasta 7 089 caracteres.

 

Sin embargo, al pensar en leer estos códigos desde la cámara de un teléfono celular necesitamos tener en cuenta varios factores.

 

Primero tenemos que tener una referencia (a) que permita la correcta colocación de la cámara para que la información pueda ser recogida sin error.

 

También necesitamos informar a la aplicación que es el formato de la información que se está leyendo, porque hay variaciones, y en algunos casos sólo podemos tener números, caracteres alfanuméricos, bits binarios, etc.

 

También hay estandarización de diferentes fechas dadas por las normas de ISSO/IEC y el celular necesita saber lo que está leyendo.

Además, necesitamos tener una referencia que le permita obtener la alineación (B) para que la aplicación sepa lo que el lado superior y el lado D del código para hacer su lectura.

 

Otra información es la información de formato (C) que también es importante para la lectura.

 

Del mismo modo que en palanquillas utilizando códigos de barras comunes, se agrega información que permite saber si los bits transmitidos en cada bloque son correctos, es decir, una información que permite probar la integridad de los datos leídos, que se da en (D)

 

Finalmente tenemos el "timing" que es una referencia a la velocidad de lectura apropiada, que se muestra en (E).

 

Finalmente tenemos en (F) la versión.

 

La figura 5 muestra cómo se coloca esta información en el código QR.

 

 

Figura 5 - información adicional
Figura 5 - información adicional

 

 

Las mejoras están todavía por venir, como el uso de colores. Sería más o menos lo que uno hace con la modulación QAM en la que el rectángulo podría contener más de 1 bit. Si usamos 16 colores diferentes, por ejemplo, cada rectángulo puede contener 4 bits.

Las características de las cámaras celulares podrían diferenciar fácilmente estos colores y con esto para un formato particular, multiplicaríamos por 4 la capacidad de almacenamiento de información.

 

En la figura 6 damos un ejemplo de este código.

 

Figura 6 – código QR usando colores
Figura 6 – código QR usando colores

 

 

 

 

Ventajas

 

 

La principal ventaja del código QR es sin duda la facilidad de uso que permite su fácil integración al móvil.

 

Además, es fácil generar un código QR para poner información sobre su producto de forma accesible y completa, permitiendo que una simple etiqueta acceda a una URL o incluso que tenga datos escritos en el teléfono de manera inmediata para consultas posteriores o incluso contacto con O, correo electrónico, teléfono, dirección, etc.

 

 

 

Generación y lectura

 

 

En Internet encontrarás varios programas y aplicaciones que te permitirán generar una etiqueta QR Code para colocar en tu producto o incluso en algún punto importante, así como leer aplicaciones que se pueden descargar en tu teléfono móvil.

 

La forma de leer una etiqueta con código QR es muy sencilla:

 

- Descarga la aplicación en tu móvil (ve a la tienda de Google Play y busca "código QR". Varios lectores están disponibles para descargar en su teléfono.

- Abra la aplicación y apunte al código QR, como se muestra en la figura 7.

 

Figura 7 – lectura del código QR
Figura 7 – lectura del código QR

 

 

Tan pronto como la aplicación reconoce el código, la información aparece en la pantalla y si se trata de un enlace para acceder a un sitio o un correo electrónico, sólo tiene que pulsar para que se abra normalmente.

 

 

 

18.9MBMemory Usage52.19msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1741912790 "last" => 1741912790...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.67KB) (227μs)
  • afterInitialise (1.14MB) (3.95ms)
  • afterRoute (179.16KB) (863μs)
  • beforeRenderComponent com_content (100.65KB) (411μs)
  • Before Access::preloadComponents (all components) (33.5KB) (172μs)
  • After Access::preloadComponents (all components) (107.06KB) (369μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (29.41ms)
  • Before Access::getAssetRules (id:27356 name:com_content.article.30989) (514.65KB) (1.05ms)
  • After Access::getAssetRules (id:27356 name:com_content.article.30989) (7.38KB) (40μs)
  • afterRenderComponent com_content (389.13KB) (6.25ms)
  • afterDispatch (2.25KB) (48μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (2.3ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (379μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (137μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (129.29KB) (1.32ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (699μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (72μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (265μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (55μs)
  • afterRender (266.05KB) (4.04ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (56.35%)
    29.41ms
    1 x afterRenderComponent com_content (389.13KB) (11.97%)
    6.25ms
    1 x afterRender (266.05KB) (7.74%)
    4.04ms
    1 x afterInitialise (1.14MB) (7.56%)
    3.95ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (4.4%)
    2.30ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (129.29KB) (2.53%)
    1.32ms
    1 x Before Access::getAssetRules (id:27356 name:com_content.article.30989) (514.65KB) (2.02%)
    1.05ms
    1 x afterRoute (179.16KB) (1.65%)
    863μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (1.34%)
    699μs
    1 x beforeRenderComponent com_content (100.65KB) (0.79%)
    411μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.73%)
    379μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.71%)
    369μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.51%)
    265μs
    1 x afterLoad (85.67KB) (0.43%)
    227μs
    1 x Before Access::preloadComponents (all components) (33.5KB) (0.33%)
    172μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.26%)
    137μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.14%)
    72μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.11%)
    55μs
    1 x afterDispatch (2.25KB) (0.09%)
    48μs
    1 x After Access::getAssetRules (id:27356 name:com_content.article.30989) (7.38KB) (0.08%)
    40μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique11.1ms1.57MB
  • SELECT @@SESSION.sql_mode;40μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 176μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)159μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`60μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest97μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`242μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)203μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.71ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`341μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '30989'117μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)179μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`191μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)242μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`210μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC410μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`213μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1150μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)97μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context87μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)192μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 175μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy