1

I have (Table1.column1 and Table1.column2) and another (Table2.column1 and Table2.column2) in my db and i wanna get result where (Table1.column1 and Table1.column2) values not found in (Table2.column1 and Table2.column2)?

Table1                          Table2
------------------------        ------------------------
 sid   sname    sclass            rid  rname    rclass
------------------------        ------------------------
| 1 | glass  | a class |        | 1 | glass  | b class |
| 2 | glass  | c class |        | 2 | glass  | c class |
| 3 | ice    | a class |        | 3 | ice    | b class |
| 4 | ice    | b class |        | 4 | ice    | c class |
| 5 | fridge | a class |        | 5 | fridge | a class |
| 5 | fridge | b class |        | 5 | fridge | c class |
------------------------        ------------------------

The result should be :

Result Table
------------------------
 sid   sname    sclass 
------------------------
| 1 | glass  | a class |
| 3 | ice    | a class |
| 5 | fridge | b class |
------------------------

As I mentioned above, this is similar to the contains method but i`m going to use this SQL string in VB6.

There are classes a,b and c. Every item such as (glass, fridge, etc.) can contain any of these classes so any combination of table2 should not exist in my result.

I want to do it with sql query which is like:

SELECT * 
  FROM area1 AS table1,
       (SELECT * FROM area2 WHERE blablabla..) AS table2
 WHERE table1.SNAME = table2.RNAME
   AND table1.sclass <> table2.rclass
Toon Krijthe
  • 52,876
  • 38
  • 145
  • 202
Berker Yüceer
  • 7,026
  • 18
  • 68
  • 102

1 Answers1

2

You need a left join

SELECT sid, sname, sclass
FROM table1
    LEFT JOIN table2
    ON table1.sname=table2.rname
    AND table1.sclass=table2.rclass
WHERE rid is null
podiluska
  • 50,950
  • 7
  • 98
  • 104