27. oktober 2002 - 21:26Der er
6 kommentarer og 1 løsning
SUBSELECT eller ?
Jeg bruger en MySQL 3.23 og ville gerne lave et subselect, men det understøtter den jo ikke. (eller?) I flg. SQL statement, ville jeg gerne kunne finde et antal records der matcher kravet i en anden tabel: SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID FROM ARTICLE, CATEGORYARTICLE WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 10 LIMIT 0, 5;
Jeg ville mægtigt gerne have muligheden for at se hvilke kolonner der matcher i tabellen ELEMENT. ELEMENT ------- ID ARTICLEID ETEXT
Så jeg prøvede at gøre sådan: SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID, (SELECT COUNT(*) FROM ELEMENT WHERE ELEMENT.ARTICLEID = ARTICLE.ID) AS ELEMENTCOUNT FROM ARTICLE, CATEGORYARTICLE WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 10 LIMIT 0, 5;
Men ud fra hvad min MySQL bog siger, så er det først understøttet af ver. 2.34. Så hvad gør en klog ?
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Subselects er ikke nødvendige, men de er dog en dejlig ting :-)
Flg. burde virke: SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID, COUNT(*) AS ELEMENTCOUNT FROM ARTICLE, CATEGORYARTICLE, ELEMENT WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 10 AND ELEMENT.ARTICLEID = ARTICLE.ID GROUP BY ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID LIMIT 0, 5;
Og ja, Postgres og MS SQL ville kunne løse det med subselects, men MySQL er hurtigere og mere stabil .. ihvertfald til det meste ..
>flse: Hmm, tja jeg fik det nu løst selv, men din giver heller ikke de kolonner retur hvor der ikke findes en ELEMENT.ETEXT.
Se min: SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID, COUNT(ELEMENT.ETEXT) AS ENUM FROM ARTICLE, CATEGORYARTICLE LEFT JOIN ELEMENT ON ELEMENT.ARTICLEID = ARTICLE.ID WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 21 GROUP BY ID; SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID, COUNT(*) AS ELEMENTCOUNT FROM ARTICLE, CATEGORYARTICLE, ELEMENT WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 21 AND ELEMENT.ARTICLEID = ARTICLE.ID GROUP BY ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID;
SELECT ARTICLE.ID, ARTICLE.TITLE, ARTICLE.PUNCHLINE, ARTICLE.ICONB, CATEGORYARTICLE.CATEGORYID, CATEGORYARTICLE.ARTICLEID, COUNT(ELEMENT.ETEXT) AS ENUM FROM ARTICLE, CATEGORYARTICLE LEFT JOIN ELEMENT ON ELEMENT.ARTICLEID = ARTICLE.ID WHERE ARTICLE.ID = CATEGORYARTICLE.ARTICLEID AND CATEGORYARTICLE.CATEGORYID = 21 GROUP BY ID;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.