{"id":550,"date":"2023-10-20T12:41:24","date_gmt":"2023-10-20T10:41:24","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=550"},"modified":"2025-06-13T10:46:04","modified_gmt":"2025-06-13T08:46:04","slug":"1-11-consultes-avancades-subconsultes","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/1-11-consultes-avancades-subconsultes\/","title":{"rendered":"1.11. Consultes avan\u00e7ades: subconsultes"},"content":{"rendered":"<p>En ocasions desitgem realitzar un tipus de pregunta sobre les nostres dades, per\u00f2 no \u00e9s factible perqu\u00e8 l\u2019organitzaci\u00f3 en taules escollida no ho permet. Per resoldre aquest problema, MySQL permet enniuar una consulta dins d\u2019una altra, amb l\u2019objectiu d\u2019utilitzar la pregunta interior per donar-li la forma apropiada a les dades, que podran ser tractades posteriorment mitjan\u00e7ant la consulta exterior.<\/p>\n<p>Sintaxi b\u00e0sica d\u2019una subconsulta:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">SELECT llista_columnes\r\nFROM nombre_taula\r\nWHERE condici\u00f3 = (SELECT llista_columnes2\r\nFROM nombre_taula2\r\nWHERE condicions);<\/pre>\n<p>Sint\u00e0cticament, des del punt de vista de la consulta principal, la subconsulta interior exercir\u00e0 el paper d\u2019una taula convencional. Per aquesta ra\u00f3, \u00e9s possible assignar un nom tant a la consulta interior com als atributs dels resultats que se\u2019n desprendran. Per a aix\u00f2 emprarem la cl\u00e0usula <strong>AS<\/strong>, que permet associar un nom a un grup d\u2019operacions o atributs en SQL. El nom emprat per a aquests atributs resulta \u00fatil per referir-s\u2019hi des de la consulta exterior.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">SELECT subconsulta.valor1,..., subconsulta.valorn FROM\r\n   (SELECT atribut1 AS valor1,..., atributn AS valorn\r\n   FROM taula GROUP BY tributi) AS subconsulta;<\/pre>\n<p>Per exemplificar la classe d\u2019escenari on les subconsultes resulten potencialment interessants, imaginem una taula gen\u00e8rica anomenada <em>taula<\/em> amb dos atributs, que denominarem <em>clase <\/em>i <em>subclsse<\/em>. Cada registre d\u2019aquesta taula pertany a una classe general, i dins d\u2019aquesta classe, a una subclasse m\u00e9s espec\u00edfica. Suposem que ens agradaria calcular la mitjana de subclasses diferents, classe per classe, que han estat utilitzades per etiquetar cada registre. Per obtenir la resposta, definirem una subconsulta que rebr\u00e0 el nom de <em>contador<\/em>. Aquesta subpregunta agrupar\u00e0 les dades per classes per comptar el nombre total de subclasses assignat als registres de cada classe principal. Finalment, la consulta exterior simplement haur\u00e0 de calcular la mitjana dels totals calculats per la subconsulta.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">classe1 subclassex\r\nclasse1 subclassey\r\nclasse1 subclassez\r\nclasse2 subclassea\r\nclasse2 subclasseb\r\nclasse3 subclassen\r\n...\r\n--------------------------------------------\r\n\r\nSELECT AVG (comptador.totals) FROM\r\n\r\n (SELECT count(subclasse) AS totals\r\n\r\n  FROM taula GROUP BY classe) AS comptador;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En ocasions desitgem realitzar un tipus de pregunta sobre les nostres dades, per\u00f2 no \u00e9s factible perqu\u00e8 l\u2019organitzaci\u00f3 en taules escollida no ho permet. Per resoldre aquest problema, MySQL permet enniuar una consulta dins d\u2019una altra, amb l\u2019objectiu d\u2019utilitzar la pregunta interior per donar-li la forma apropiada a les dades, que podran ser tractades posteriorment [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/550"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=550"}],"version-history":[{"count":10,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/550\/revisions"}],"predecessor-version":[{"id":962,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/550\/revisions\/962"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}