如何使用sql查询从另一个表中获取数据?

时间:2016-11-30 07:25:19

标签: php mysql sql join

我有2个MySQL表格如下:

用户表( let angle = CGFloat(M_PI_2) let tr = CGAffineTransform.identity.rotated(by: angle) ImageView.transform = tr 是电台主键)

st_id

电台

uid  fname  lname company_name  email    phone  st_id
=====================================================
9    xxx    yyyy  zzzz          x@y.com  xxx    5,6

现在使用一个 SQL查询我想从st_id uid st_name st_lat st_long lg_id ============================================ 5 9 xxx 24.25 24.95 8,9,10 6 9 yyy 23.25 23.95 11,12,12 表中获取所有数据,并从users表获取st_name匹配的所有stationst_id

这意味着它应该返回uid表中的所有数据以及来自users表的所有st_name station = 9

我当前的SQL查询:

uid

注意:$getData = mysqli_query($conn, "SELECT users.uid, users.company_name, users.fname, users.lname, users.phone, users.email, station.st_id, station.st_name, logger.lg_name FROM users LEFT JOIN station ON station.st_id = users.st_id LEFT JOIN logger ON logger.lg_id = station.lg_id LEFT JOIN channel ON channel.ch_id = logger.ch_id WHERE users.power != 'admin' "); 表中,我将station值存储为数组。喜欢:

st_id

更新代码:

$st_id_value =  implode(',', $st_id_value); 

返回

 $getData = mysqli_query($conn, "SELECT users.uid, users.company_name, users.fname, users.lname, users.phone, users.email, station.st_id, station.st_name, logger.lg_name 
FROM users LEFT JOIN station
ON FIND_IN_SET(station.st_id, users.st_id)
LEFT JOIN logger ON logger.lg_id = station.lg_id 
LEFT JOIN channel ON channel.ch_id = logger.ch_id
WHERE users.power != 'admin' AND station.uid=$uid");

$fetchData = mysqli_fetch_assoc($getData) ;

echo '<pre>';
    print_r($fetchData);
echo '</pre>'; 

1 个答案:

答案 0 :(得分:1)

您可以尝试此查询。

SELECT users.uid, users.company_name, users.fname, users.lname, users.phone, users.email, station.st_id, station.st_name, logger.lg_name 
FROM users INNER JOIN station
ON FIND_IN_SET(station.st_id, users.st_id)
LEFT JOIN logger ON logger.lg_id = station.lg_id 
LEFT JOIN channel ON channel.ch_id = logger.ch_id
WHERE users.power != 'admin' AND users.uid=9

您可以在这里用您想要的uid替换9。

<强>更新

$getData = mysqli_query($conn, "SELECT users.uid, users.company_name, users.fname, users.lname, users.phone, users.email, station.st_id, station.st_name, logger.lg_name 
FROM users LEFT JOIN station
ON FIND_IN_SET(station.st_id, users.st_id)
LEFT JOIN logger ON logger.lg_id = station.lg_id 
LEFT JOIN channel ON channel.ch_id = logger.ch_id
WHERE users.power != 'admin' AND station.uid=$uid");

while($fetchData = mysqli_fetch_assoc($getData))
{
    echo '<pre>';
    print_r($fetchData);
    echo '</pre>'; 
}