Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » SQL och Databaser » Jämföra värden i tb2 och tb3  
 
Skriven av: chibi | den 19 december 2012 Kl 02:56
Jämföra värden i tb2 och tb3 Tråden är löst
Hej, jag kör fast rejält. Var ett tag sedan jag lekt något djupare i sql med joins m.m.

Jag har tre tabeller, alla tre innehåller flertalet värden som kan länkas till varandra.

Jag vill jämföra och se om alla tb2 har en motsvarande i tb3, för att göra de ännu svårare kommer tb1 har fler "AND" och "OR" villkor. Dessa "AND" och "OR"-villkor har koppling till de nummer jag kopplar tb2's columt, dessa kommer från en fjärdetabell som löses med kod och bör inte vara intressant i detta fallet.

Kod:
TABLE `tb1`
  `id` int(9) NOT NULL AUTO_INCREMENT  PRIMARY KEY
  `name` varchar(50) NOT NULL
  `colums` varchar(150) NOT NULL
  `lastseen` datetime NOT NULL
  `added` datetime NOT NULL
  



Kod:
TABLE `tb2`
  `id` int(12) NOT NULL AUTO_INCREMENT PRIMARY KEY
  `sid` int(11) NOT NULL
  `rid` int(11) NOT NULL
  `got` varchar(4) NOT NULL
  `donedate` datetime NOT NULL
  



Kod:
TABLE `tb3`
  `id` int(6) NOT NULL AUTO_INCREMENT PRIMARY KEY
  `name` varchar(35) NOT NULL
  `column` varchar(5) NOT NULL
  `columu` varchar(250) NOT NULL
  `img` varchar(50) NOT NULL
  `columa` varchar(25) NOT NULL
  `columt` varchar(150) NOT NULL
  



Vad jag försökte skapa, ganska säker på att jag är helt fel ute.

Kod:
SELECT * FROM `db`.`tb1` WHERE `db`.`tb1`.`name` REGEXP 'text.[^i]' AND
(SELECT `db`.`tb2`.`id` FROM `db`.`tb2` WHERE
`db`.`tb2`.`sid` = (SELECT `db`.`tb3`.`id` FROM `db`.`tb3` WHERE
`db`.`tb3`.`columt` IN (1)) AND `db`.`tb3`.rlid = `db`.`tb1`.id) is null OR
`name` LIKE '%kalle%' AND
(SELECT `db`.`tb2`.`id` FROM `db`.`tb2` WHERE
`db`.`tb2`.`sid` = (SELECT `db`.`tb3`.`id` FROM `db`.`tb3` WHERE
`db`.`tb3`.`columt` IN (1)) AND `db`.`tb3`.rlid = `db`.`tb1`.id) is null OR
`name` LIKE '%anka%'  AND
(SELECT `db`.`tb2`.`id` FROM `db`.`tb2` WHERE
`db`.`tb2`.`sid` = (SELECT `db`.`tb3`.`id` FROM `db`.`tb3` WHERE
`db`.`tb3`.`columt` IN (1)) AND `db`.`tb3`.rlid = `db`.`tb1`.id) is null OR
`name` LIKE '%långben%'  AND (SELECT `db`.`tb2`.`id` FROM `db`.`tb2` WHERE
`db`.`tb2`.`sid` = (SELECT `db`.`tb3`.`id` FROM `db`.`tb3` WHERE
`db`.`tb3`.`columt` IN (1)) AND `db`.`tb3`.rlid = `db`.`tb1`.id) is null ORDER BY `name`



Får "#1242 - Subquery returns more than 1 row" på denna.

Tack i förhand för hjälpen, vill ni ha mer kött på ben så säg till.

[kompletterat username=chibi datum=2012-12-19 06:28]Edit: Löste det, ni får gärna flika in bättre lösning om ni har.

Inte hela sql för orkar inte maskera hela.

Kod:
SELECT * FROM `db`.`tb1` WHERE `db`.`tb1`.`name` REGEXP 'text.[^i]' AND (SELECT count(`db`.`tb3`.`id`) FROM `db`.`tb3` WHERE `db`.`tb3`.`types` IN (1)) > (SELECT count(`db`.`tb2`.`id`) FROM `db`.`tb2` WHERE `db`.`tb2`.`rid` = `db`.`tb1`.`id` AND `db`.`tb2`.`sid` IN (SELECT `db`.`tb3`.`id` FROM `db`.`tb3` WHERE `db`.`tb3`.`columt` IN (1))) ORDER BY `name`

[/kompletterat]

Antal svar 0



 
     

  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,5625 sekunder att ladda sidan