nemec Posted November 1, 2007 Report Share Posted November 1, 2007 SELECT (SELECT z.`added`, z.`name` FROM `table2` AS z WHERE z.`cat_id`=ca.`id` LIMIT 1) topic, ca.name FROM `table1` AS ca izdod taadu erroru: "Operand should contain 1 column(s) ". vinjam nepatiik, ka otrajaa selectaa njemu divus ierakstus. kaut kur droshi vien kljuuda pieprasiijumaa. Link to comment Share on other sites More sharing options...
andrisp Posted November 1, 2007 Report Share Posted November 1, 2007 Subselecti, cik zinu, var atgriezt tikai vienu vērtību. Link to comment Share on other sites More sharing options...
Roze Posted November 2, 2007 Report Share Posted November 2, 2007 Nedaudz grūti saprast kveriju (nezinot tabulas relācijas un vēlamo rezultātu), bet ja pareizi uztveru tad tu gribi tos divus laukus aliasot kā 'topic'? Nu tad workarounds varētu būt concatenot ... (SELECT CONCAT(z.`added`, z.`name`) FROM `table2` AS z WHERE z.`cat_id`=ca.`id` LIMIT 1) topic .... Un būs viens lauks subselectā.. Bet ja savādāk savādāk drizāk kaut kā šādi: SELECT z.`added`, z.`name`, ca.name FROM `table2` AS z, `table1` AS ca WHERE z.`cat_id`= ca.`id` Tb netaisīt subselectus bet joinus.. lai gan tad ar jāzin kādi dati ir tabulā. Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 2, 2007 Report Share Posted November 2, 2007 a prieks kam tur subselectu? iskatas ka visparastakais JOIN (drizaak gan INNER JOIN...) ja ir 2 atseviskjas tabulas.... --- P.S. Laikam buusi parstradajies.... ;) Link to comment Share on other sites More sharing options...
marcis Posted November 2, 2007 Report Share Posted November 2, 2007 kur problēma? SELECT z.added, z.name, ca.topic, ca.name FROM `table2` z, `table1` ca WHERE z.cat_id=ca.id varjau būt ka neizpratu lietas būtību Link to comment Share on other sites More sharing options...
nemec Posted November 2, 2007 Author Report Share Posted November 2, 2007 es nesaprotu kaapeec subselect var atgriezh tikai vienu veertiibu. var jau izmantot concat vai concat_ws, bet tas tak ir cherez zh... taa ir tikai dalja no mana pieprasiijuma - taa ir atbilde uz jautaajumu 'prieksh kam man subselecti' Link to comment Share on other sites More sharing options...
Delfins Posted November 2, 2007 Report Share Posted November 2, 2007 (edited) Nu un kā to nevar saprast !? Tu veic selektu, kur kolonnas vērtība ir subselekta rezultāts.. attiecīgi subselektam IR JĀATGRIEŽ tikai VIENA rinda UN viena kolonna! basta...! čerez ž... izskatās tavs pieprasījums, jo tur ir tipisks JOIN... tavā subselekta vispār nav nekas specifisks un pārdabisks... Edited November 2, 2007 by Delfins Link to comment Share on other sites More sharing options...
andrisp Posted November 2, 2007 Report Share Posted November 2, 2007 (edited) Tāpēc, ka subselecti rezultāt atgriež šādi: (select ...) as x Kā, tavuprāt, tas varētu atgriezt divus ? Tas ir tāpāt kā funkcijas atgriež tikai vienu rezultātu (Protams, var jau ar masīviem utt, bet tas jau ir cits stāsts). nemec, labāk pastāsti, ko vajag dabūt gatavu. Edited November 2, 2007 by andrisp Link to comment Share on other sites More sharing options...
nemec Posted November 2, 2007 Author Report Share Posted November 2, 2007 atradu te pat forumaa UPDATE ( SELECT user_id, sum( kaaposti_h ) AS summa FROM t2 GROUP BY user_id ) summary, t1 SET t1.kaaposti = t1.kaaposti + summary.summa WHERE t1.id = summary.user_id; kas tur diez taads iipash, ka es gribu divas veertiibas Link to comment Share on other sites More sharing options...
andrisp Posted November 2, 2007 Report Share Posted November 2, 2007 Ko tas kverijs dara ? Kaut kā neticas, ka viņš arī strādā. Pārbaudīji jau ? Link to comment Share on other sites More sharing options...
Delfins Posted November 2, 2007 Report Share Posted November 2, 2007 it kā tādu SQL mysql pieļauj... UPDATE (select ...) SET ... WHERE.. Bet es neesmu pārliecināts vai to tiešām tā vajag darīt. Nu nesmuki... Ja atbild uz nemec jautājumu, tad UPDATE un SELECT gadījuma tur 2 dažādas interpretācijas - pie UPDATE tiek veidots temp rezultāts, bet pie SELECT rezultāts tiek atgriezts kolonnā. Nu nesmuki ta darīt... kāpēc jāpilda 1000x subselekti, ja joins visu pats izdarīs? Link to comment Share on other sites More sharing options...
marcis Posted November 2, 2007 Report Share Posted November 2, 2007 Vai tad parasti selektu selektā neizmanto tad, kad nepieciešams izselektēt kautko, kur vērtība ir kautkas no citurienes, karo4 piem: SELECT j.jautajums FROM `jautajumi` j WHERE lang=(SELECT id FROM `valodas` WHERE name='{$_GET['lang']}' LIMIT 1 ) domāju aptuveni tā, ka aiz SELECT parasti raksta izselektējamās kolonas, ne? šajā gadījumā, ja nepieciešams piem divas valodas (piemērs stulbs, bet pieņemam, ka divām valodām ar dažādiem id ir vienādi nosaukumi) SELECT j.jautajums FROM `jautajumi` j WHERE lang=ANY(SELECT id FROM `valodas` WHERE name='{$_GET['lang']}') Link to comment Share on other sites More sharing options...
Ghenis Posted November 2, 2007 Report Share Posted November 2, 2007 Mārci, tam ir domāts JOIN. $result=mysql_query("SELECT j.jautajums FROM jautajumi J INNER JOIN valodas v ON j.lang=v.id WHERE v.name='".mysql_real_escape_string($_GET['lang'])."'); Link to comment Share on other sites More sharing options...
Gints Plivna Posted November 3, 2007 Report Share Posted November 3, 2007 SELECT (SELECT z.`added`, z.`name` FROM `table2` AS z WHERE z.`cat_id`=ca.`id` LIMIT 1) topic, ca.name FROM `table1` AS ca Šis ko Tu vēlies dabūt saucās skalārie apakšvaicājumi (scalar subquery) un tie var atgriezt tikai vienu vērtību. Šis apakšvaicājumu veids ir aprakstīts šeit http://dev.mysql.com/doc/refman/5.1/en/sca...subqueries.html Tur tā īpaši uzsvērts nav, ka var būt tikai viena vērtība, bet acīmredzot tā tomēr ir. Tā kā es vairāk kaut ko sajēdzu no Oracle, tad tur ir analogi, kas ir aprakstīti šeit http://download.oracle.com/docs/cd/B19306_....htm#sthref2680 Un Oracle aprakstā ir rakstīts apmēram tas pats, tikai uzsvērts, ka "A scalar subquery expression is a subquery that returns exactly one column value from one row". Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Gints Plivna Posted November 3, 2007 Report Share Posted November 3, 2007 (edited) Starp citu nedaudz padomāju, ko nozīmē vārds skalārs un ko vektors, un sapratu, ka pats nosaukums jau vien saka, ka atļauta ir tikai viena vienīga vērtība :) Gints Plivna http://datubazes.wordpress.com/ Edited November 3, 2007 by Gints Plivna Link to comment Share on other sites More sharing options...
Recommended Posts