Subject: select items based on 2 columns

From: Shaozhong SHI <[email-masked]>
Date: Mon, 8 Aug 2022 09:24:14 +0100

The following is the type of data:

id  id_b   in    out
51 57     false false
51 42     true   false
51   32   false  false
51   76   false  true
51  49     true   false

How to do the following:

select id from tbl   if in is true and out is true are found?

Regards,

David

---

From: Frank Streitzig <[email-masked]>
Date: Mon, 8 Aug 2022 11:32:17 +0200

> select id from tbl   if in is true and out is true are found?

Untested:
select t.id from tbl t where t.in and t.out;

Best regards,
Frank

---

From: Pierre Chevalier <[email-masked]>
Date: Mon, 8 Aug 2022 18:17:50 +0200

Hello,

Short answer:
SELECT id FROM tbl WHERE in and out;

BUT this will never work as is.

Longer answer:
First of all, it would be better not to name fields with word having a meaning in SQL: "in" is not accepted as a valid field name.
 From now on, to get rid of this problem, I renamed the in and out fields by appending an "x" at the end: "in" becomes "inx" and "out" becomes "outx".

Here is the complete answer; I added some data matching your criteria:

-- Create the table:
CREATE TEMPORARY TABLE tbl (id integer, id_b integer, inx boolean, outx boolean);

-- Put some data into it:
INSERT INTO tbl (id, id_b, inx, outx) VALUES
(51, 57, false, false),
(51, 42,  true, false),
(51, 32, false, false),
(51, 76, false, true),
(51, 49,  true, false),
(51, 47,  true, true);

-- Select id where inx is true and outx is true:
SELECT id FROM tbl WHERE inx and outx;

-- Output:
┌────┐
│ id │
├────┤
│ 51 │
└────┘

À+
Pierre

-- 
Pierre Chevalier

---

From: Carl Sopchak <[email-masked]>
Date: Mon, 8 Aug 2022 12:30:50 -0400

You can also quote column names that are SQL keywords, so "in"
and "out" would also work, but I also agree that it's not great
practice.  However, IMHO, IN and OUT doesn't tell you a lot.  In
and out of what?  Inbound/outbound?  In_water / out_of_water?  You
get the idea.  Using clear column names helps prevent misuse
(intentional or not).

On 8/8/22 12:17, Pierre Chevalier
wrote:

Hello,

Short answer:

Longer answer:

-- Create the table:

-- Output:
┌────┐
│ id │
├────┤
│ 51 │
└────┘

À+
Pierre

Le 08/08/2022 à 10:24, Shaozhong SHI
a écrit :

id  id_b   in    out

51 57     false false

51 42     true   false

51   32   false  false

51   76   false  true

51  49     true   false

How to do the following:

select id from tbl   if in is true and out is true are
found?

Regards,

David

--
Pierre Chevalier