Select с JOIN
limito этот запрос, чтобы перечислить только запись изображения?
у Меня есть таблица недвижимость и таблицы, фотографии, таблицы недвижимости имеет несколько записей, и каждая запись имеет несколько фотографий, но когда я запускаю select, он принимает во внимание объем фотографий, что собственность есть, я хочу, чтобы отображались только фото недвижимости
SELECT * FROM imovel JOIN imagem ON id_imagem_imovel = id_imovel ORDER BY id_imovel DESC
структурой:
CREATE TABLE `imagem` (
`id_foto` int(11) UNSIGNED NOT NULL,
`id_imagem_imovel` int(11) NOT NULL,
`foto` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `imagem` (`id_foto`, `id_imagem_imovel`, `foto`) VALUES
(12, 6, '6_383_27_01_2017_1485520949.jpg'),
(13, 7, '7_396_27_01_2017_1485521179.jpg'),
(14, 7, '7_403_27_01_2017_1485521179.jpg'),
(15, 7, '7_410_27_01_2017_1485521179.jpg'),
(16, 7, '7_417_27_01_2017_1485521179.jpg'),
(17, 7, '7_424_27_01_2017_1485521179.jpg'),
(18, 5, '5_429_27_01_2017_1485522171.jpeg'),
(20, 1, '1_434_27_01_2017_1485523016.jpeg'),
(21, 1, '1_435_27_01_2017_1485523016.jpeg'),
(22, 1, '1_436_27_01_2017_1485523016.jpeg'),
(23, 1, '1_437_27_01_2017_1485523016.jpeg'),
(24, 4, '4_441_27_01_2017_1485523040.jpg');
CREATE TABLE `imovel` (
`id_imovel` int(11) NOT NULL,
`nome_proprietario` varchar(150) NOT NULL,
`telefone_proprietario` varchar(255) NOT NULL,
`endereco_imovel` varchar(255) NOT NULL,
`id_tipo` int(11) NOT NULL,
`id_cidade` int(11) NOT NULL,
`id_bairro` int(11) NOT NULL,
`finalidade` enum('Alugar','Comprar') NOT NULL,
`dormitorios` int(11) DEFAULT NULL,
`suites` int(11) DEFAULT NULL,
`banheiros` int(11) DEFAULT NULL,
`garagem` int(11) DEFAULT NULL,
`area` int(11) DEFAULT NULL,
`valor` decimal(10,2) DEFAULT NULL,
`descricao` text,
`banner` tinyint(1) NOT NULL DEFAULT '0',
`destaque` tinyint(1) NOT NULL DEFAULT '0',
`dt_cadastro` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `imovel` (`id_imovel`, `nome_proprietario`, `telefone_proprietario`, `endereco_imovel`, `id_tipo`, `id_cidade`, `id_bairro`, `finalidade`, `dormitorios`, `suites`, `banheiros`, `garagem`, `area`, `valor`, `descricao`, `banner`, `destaque`, `dt_cadastro`) VALUES
(1, '', '', '', 1, 1, 1, 'Alugar', 3, 1, 2, 2, 100, '250000.00', 'Primeiro imóvel cadastrado.', 0, 1, '2017-01-23 19:30:37'),
(4, 'MARCOS', '', 'Rua , 286', 3, 1, 3, 'Comprar', 1, 1, 1, 1, 0, '1500.00', 'Descrição aqui', 1, 1, '0000-00-00 00:00:00'),
(5, 'PAULO ', '31989820602', 'Rua , 286', 3, 1, 4, 'Comprar', 3, 2, 1, 2, 0, '5222.00', 'Descrição aqui', 1, 1, '0000-00-00 00:00:00'),
(6, 'MARCOS PAULO ', '31989820602', 'Rua , 286', 3, 1, 4, 'Comprar', 3, 2, 1, 2, 0, '5222.00', 'Descrição aqui', 1, 1, '0000-00-00 00:00:00'),
(7, 'MARCOS PAULO ', '31989820602', 'Rua , 286', 3, 1, 4, 'Comprar', 3, 2, 1, 2, 0, '5222.00', 'Descrição aqui', 1, 1, '0000-00-00 00:00:00');
1
Author: Guilherme Nascimento, 2017-01-27
2 answers
Используйте limit
:
SELECT *
FROM imovel JOIN imagem ON id_imagem_imovel = id_imovel
ORDER BY id_imovel DESC
LIMIT 1
Я Считаю, что если хотите показать несколько недвижимость вы можете использовать GROUP by:
SELECT *
FROM imovel JOIN imagem ON id_imagem_imovel = id_imovel
GROUP by id_imovel
ORDER BY id_imovel DESC
Недвижимости без фото будут перечислены, замените JOIN
"LEFT JOIN
:
SELECT *
FROM imovel LEFT JOIN imagem ON id_imagem_imovel = id_imovel
GROUP by id_imovel
ORDER BY id_imovel DESC
, Как описано:
5
Author: Guilherme Nascimento, 2017-04-13 12:59:38
Ты можешь сделать JOIN
с одного subselect
:
SELECT * FROM imovel
JOIN
(
SELECT DISTINCT id_imagem_imovel FROM imagem
GROUP BY id_imagem_imovel
) AS imagem ON imagem.id_imagem_imovel = imovel.id_imovel
ORDER BY imovel.id_imovel DESC
Таким образом, он группирует фотографии по id
, imovel
и после этого применяет JOIN
0
Author: Marcelo de Andrade, 2017-01-27 14:00:27