aika Posted April 26, 2010 Report Posted April 26, 2010 Dota tabula A ar diviem laukiem: AA un AB AA AB 1 1 1 2 2 3 1 4 1 5 un tabula B ar diviem laukiem BA un BB BA BB 2 1 1 4 1 6 vajag izveidot pieprasījumu, kas reģistrē gadījumu (rindu skaits >0), kad mainīgais C sakrīt ar AA, ja vien attiecīgais AB nav pārī ar mainīgo D tabulā B piemēram: ir jānoreaģē ja C ir 2 un D ir jebkas (3 nav neviena pāra tabulā B) ir jānoreaģē ja C ir 1 un D ir 5 (5 nav neviena pāra tabulā B) nav jānoreaģē ja C ir 1 un D ir 1 (1 ir pārī ar 2) nav jānoreaģē ja C ir 1 un D ir 6 (6 ir pārī ar 1) ceru ka domu sapratāt, izskatās ka jālieto WHERE no SELECTa, bet man tiešām pieredze pa īsu. Paldies jau iepriekš. Quote
aika Posted April 26, 2010 Author Report Posted April 26, 2010 un vai šāds pieprasījums ir saprātīgs, ja tabulā A ir 500K ierakstu? Quote
php newbie Posted April 27, 2010 Report Posted April 27, 2010 Dota tabula A ar diviem laukiem: AA un AB AA AB 1 1 1 2 2 3 1 4 1 5 un tabula B ar diviem laukiem BA un BB BA BB 2 1 1 4 1 6 vajag izveidot pieprasījumu, kas reģistrē gadījumu (rindu skaits >0), kad mainīgais C sakrīt ar AA, ja vien attiecīgais AB nav pārī ar mainīgo D tabulā B piemēram: ir jānoreaģē ja C ir 2 un D ir jebkas (3 nav neviena pāra tabulā B) ir jānoreaģē ja C ir 1 un D ir 5 (5 nav neviena pāra tabulā B) nav jānoreaģē ja C ir 1 un D ir 1 (1 ir pārī ar 2) nav jānoreaģē ja C ir 1 un D ir 6 (6 ir pārī ar 1) ceru ka domu sapratāt, izskatās ka jālieto WHERE no SELECTa, bet man tiešām pieredze pa īsu. Paldies jau iepriekš. izskatās pēc kļūdas piemērā un ja vien attiecīgais AB nav pārī ar mainīgo D tabulā B tas ir B.BA = A.AB un B.BB = D vai nu B.BA = A.AB un B.BB = D vai B.BA = D un B.BB = B.BA Quote
aika Posted April 27, 2010 Author Report Posted April 27, 2010 nav vis klūdas. Ja C=1 , tad AB vērtības ir 1;2;4;5 savukārt ja D=1, tad tā pāris ir 2, tātad sakrīt ar vienu no AB vērtībām. Respektīvi - pāris ir pāris, strādā abos virzienos! Quote
Aleksejs Posted April 27, 2010 Report Posted April 27, 2010 Man galvā domājot sanāca šādi: SELECT count(A1.AA) FROM A AS A1 WHERE A1.AA=C AND A1.AB NOT IN (SELECT BA FROM B AS B1 WHERE B1.BB = C) AND A1.AB NOT IN (SELECT BB FROM B AS B2 WHERE B2.BA = C) Quote
Gints Plivna Posted April 27, 2010 Report Posted April 27, 2010 (edited) Jautājumi: 1) DB? 2) create table skripti? 3) insert skripti dotajiem datiem? 4) kas notiek tad, ja tabulā A ir 1, 2, tabulā B ir 2, 3 un C = 1 un D = 2? T.i., vai tabulā B ir jāskatās tikai uz otru pāra elementu, vai arī der tas pārīša elements uz kuru esmu aizbraucis pa taisno? Par pirmajiem trīs maniem jautājumiem skat te http://datubazes.wordpress.com/2008/05/27/ka-uzdot-jautajumu/'>http://datubazes.wordpress.com/2008/05/27/ka-uzdot-jautajumu/ sadaļā par specifiku datubāzēm. Gints Plivna http://datubazes.wordpress.com oops 1) atkrīt izrādās topika nosaukumā/tēmā/vai kā nu to sauc bija :) Edited April 27, 2010 by Gints Plivna Quote
php newbie Posted April 27, 2010 Report Posted April 27, 2010 (edited) teorētiski es rakstītu kko tādu, bet nu labāk gaidi guru variantu :) SELECT * FROM A WHERE A.AA = C AND A.AB NOT IN (SELECT BA FROM B WHERE B.BB = D UNION SELECT BB FROM B WHERE B.BA = D) edit: oops kamēr rakstiju jau vairāki varianti no guru ir :D Edited April 27, 2010 by php newbie Quote
aika Posted April 27, 2010 Author Report Posted April 27, 2010 Paldies. Par 'not in' sintaksi kkā neiedomājos - uzreiz izskatās vienkāršāk. dodos pārbaudīt. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.