Loading...
PHP/MySQL | Помощь по SQL (вложенный запрос)
Bimax (23.10.2018 в 15:03)
TuT (23.10.2018 в 14:49)
Bimax (23.10.2018 в 13:50)
Вообщем суть такова
Есть 2 таблицы, city и firm

Структура таблицы city - id, name
Структура таблицы firm - id, name, id_city

Мне нужно вывести названия городов, которые не имеют связи с какой-либо фирмой, т.е город в котором ни одна из фирм не расположена

Если я тебя правильно понял <?
$q = "SELECT * FROM `city`,`firm` WHERE (`city`.`id` = `firm`.`id_city`)";
//или так, если нет названий городов
$q = "SELECT * FROM `city`,`firm` WHERE (`city`.`id` = `firm`.`id_city` AND `city`.`name` = '".NULL."')";



Вот та же логика как в первом твоем запросе была у меня, но в этом случае выводятся города в которых есть фирмы, если поменять знак = на != то тогда города дублируются в зависимости от колличества фирм

Что-то тут не так, и я не могу понять какой момент пропущен

имеешь ввиду, вывести города, которые не использовались ещё в фирмах?
Avenax (23.10.2018 в 16:10)
Bimax (23.10.2018 в 13:50)
Вообщем суть такова
Есть 2 таблицы, city и firm

Структура таблицы city - id, name
Структура таблицы firm - id, name, id_city

Мне нужно вывести названия городов, которые не имеют связи с какой-либо фирмой, т.е город в котором ни одна из фирм не расположена

$sql = "SELECT city.name FROM city, firm WHERE city.id != firm.id_city";

Так и делаю,
В базе у меня 4 города, фирм в базе 3 (фирмы юзают только 3 города из базы, кроме города №3)

В таком случае результат вида:

Город 1
Город 1

Город 2
Город 2

Город 3
Город 3
Город 3

Город 4
Город 4
Avenax (23.10.2018 в 16:24)
Bimax (23.10.2018 в 15:03)
TuT (23.10.2018 в 14:49)
Bimax (23.10.2018 в 13:50)
Вообщем суть такова
Есть 2 таблицы, city и firm

Структура таблицы city - id, name
Структура таблицы firm - id, name, id_city

Мне нужно вывести названия городов, которые не имеют связи с какой-либо фирмой, т.е город в котором ни одна из фирм не расположена

Если я тебя правильно понял <?
$q = "SELECT * FROM `city`,`firm` WHERE (`city`.`id` = `firm`.`id_city`)";
//или так, если нет названий городов
$q = "SELECT * FROM `city`,`firm` WHERE (`city`.`id` = `firm`.`id_city` AND `city`.`name` = '".NULL."')";



Вот та же логика как в первом твоем запросе была у меня, но в этом случае выводятся города в которых есть фирмы, если поменять знак = на != то тогда города дублируются в зависимости от колличества фирм

Что-то тут не так, и я не могу понять какой момент пропущен

имеешь ввиду, вывести города, которые не использовались ещё в фирмах?


Да, да)))
Bimax, попробуй так
$1sql = SELECT city.id FROM city, firm WHERE city.id = firm.id_city
$ids = implode(',', $1sql[id]);
$2sql = SELECT city.id FROM city WHERE NOT IN ($ids)
На всякий случай оставлю свой гкод:

$max = 10; // лимит итераций (устанавливать от расчета кол-ва городов в таблице city)

for($i=1; $i!=$max; $i++)
{

if($db -> query("SELECT `id` FROM `firm` WHERE `id_city` = '".$i."' ") -> num_rows == 0)
{
$city = $db -> query("SELECT `name` FROM `city` WHERE `id` = '".$i."'") -> fetch_row();
echo $city[0].'<br />';
}

}

Гг
SayrusCraft, запрос в цикле => руки под топор Гг
Avenax (23.10.2018 в 16:48)
SayrusCraft, запрос в цикле => руки под топор Гг

Наследие DCMS Гг
Avenax (23.10.2018 в 16:44)
Bimax, попробуй так
$1sql = SELECT city.id FROM city, firm WHERE city.id = firm.id_city
$ids = implode(',', $1sql[id]);
$2sql = SELECT city.id FROM city WHERE NOT IN ($ids)

Одним запрос без других манипуляций никак не решить? У меня просто 4 задания на выборку из по одниму запросу на каждое, 3 сделал, а вот это не могу решить.

P.S Кстати это мне задание для джуна дали*CRAZY*
________
посл. ред. 23.10.2018 в 17:04; всего 1 раз(а); by Bimax
Bimax (23.10.2018 в 16:57)
Avenax (23.10.2018 в 16:44)
Bimax, попробуй так
$1sql = SELECT city.id FROM city, firm WHERE city.id = firm.id_city
$ids = implode(',', $1sql[id]);
$2sql = SELECT city.id FROM city WHERE NOT IN ($ids)

Одним запрос без других манипуляций никак не решить? У меня просто 4 задания на выборку из по одниму запросу на каждое, 3 сделал, а вот это не могу решить.

P.S Кстати это мне задание для джуна дали*CRAZY*


пробни
SELECT с.id FROM city с LEFT OUTER JOIN firm а ON с.id = а.id_city WHERE а.id_city IS NULL
Avenax (23.10.2018 в 17:15)
пробни
SELECT с.id FROM city с LEFT OUTER JOIN firm а ON с.id = а.id_city WHERE а.id_city IS NULL


Бог ты мой, это просто ШЕДЕВРАЛЬНО!!! Это работает
*hlophlop*
Спасибо большое Саша)

Пойду читать о той магии что ты использовал:-)
Онлайн: 0
Время:
Gen. 0.1141
(c) Bym.Guru 2010-2025