Wanjala Alex
Wanjala Alex

Reputation: 141

Combine SQL statement

I would like to select different column from different row from the same table with one statement . How will I combine this to be one?

SELECT `shop_lat_log` FROM `customers` WHERE `phoneNumber`='254719401837'
SELECT `delivery_lat_log` FROM `customers` WHERE `phoneNumber`='25472054919'

Upvotes: 0

Views: 28

Answers (3)

Aluan Haddad
Aluan Haddad

Reputation: 31803

Use an SQL case statement

select case c.phone_number 
    when '254719401837' 
    then c.shop_lat_log
    when '25472054919'
    then c.delivery_lat_log
end as field
from customer as c
where c.phone_number in ('254719401837', '25472054919')

Upvotes: 1

rickdenhaan
rickdenhaan

Reputation: 11298

You can use a UNION for that:

SELECT `shop_lat_log` FROM `customers` WHERE `phoneNumber`='254719401837'
UNION
SELECT `delivery_lat_log` FROM `customers` WHERE `phoneNumber`='25472054919'

Note that the second query must have the same number of columns as the first query, and the results will have the first query's column names.

So even though you're selecting the delivery_lat_log column in your second query, the results will be in the shop_lat_log column if you're fetching an associative array.

Upvotes: 1

Tim Biegeleisen
Tim Biegeleisen

Reputation: 520968

You could just use each of two current queries as subqueries in one select statement:

SELECT
    (SELECT shop_lat_log FROM customers WHERE phoneNumber = '254719401837') AS shop_lat_log,
    (SELECT delivery_lat_log FROM customers WHERE phoneNumber = '25472054919') AS delivery_lat_log
FROM dual;

This assumes that each of your two queries returns a single value. If not, then perhaps a UNION would be more appropriate:

SELECT
    shop_lat_log AS log_value,
    'shop_lat_log' AS log_type
FROM customers
WHERE phoneNumber = '254719401837'
UNION ALL
    SELECT
    delivery_lat_log,
    'delivery_lat_log'
FROM customers
WHERE phoneNumber = '25472054919'

Upvotes: 1

Related Questions