Посмотрите две таблицы и используйте min ()

Мы начинаем с двух таблиц:

Aminales: ID_animal, nombre, especie, incenter  
          1          Toby    2         1  
          2          Micke   2         1  
          3          Jake    2         1  
          4          Tom     2         1  

Entradas: ID_entrada, ID_animal, municipio  
          1           1          Las Rosas  
          2           2          Coslada  
          3           3          Las Rosas  
          4           4          Madrid  
          5           3          Coslada  
          6           2          Coslada  

Мне нужно получить количество животных, которые в настоящее время находятся внутри центра (incenter=1) и являются собаками (2) для каждого муниципалитета. Как видно из таблиц, животное 3 Джейк было доставлено в центр животных дважды, ID_entrada 3 и 5. Но нам нужно только самое низкое ID_entrada, чтобы оно выглядело только как доставленное из его первоначального муниципалитета, в этом случае Las Rosas. Независимо от того, сколько раз вы поступали из других муниципалитетов после усыновления и возвращения в центр.

Результат консультации должен быть следующим:

Madrid: Tom (total 1)  
Las Rosas: Toby, Jake (total 2)  
Coalada: Micke (total 1)

Я пробовал этот вопрос:

SELECT animales.nombre, animales.ID_animal, entradas.ID_entrada 
FROM animales 
left JOIN entradas ON (animales.ID_animal = entradas.ID_animal AND incenter=1 AND especie=2 AND entradas.ID_entrada=(select min(ID_entrada) from entradas where municipio=$ID_municipio)

Я не могу заставить его работать. Ты можешь что-нибудь придумать?

0
задан 20.11.2016, 15:16
3 ответа

Хорошие, обрежь пробовать следующее:

SELECT COUNT(*) FROM animales a INNER JOIN entradas e 
ON a.id_animal=e.id_animal WHERE a.especie=2 AND a.incenter=1 GROUP BY e.municipio
0
ответ дан 24.11.2019, 12:30
  • 1
    Upss забыл самое важное. У каждого животного может быть несколько поступающих данных, так как этот может быть принятым в другой mucipio и вернуться раньше с этого другого муниципалитета. а следовательно мне нужно, чтобы только хромая стоимость муниципалитет самого низкого ID_entrada, если это не этот дебет obiarlo, или он появился у меня в общем количестве каждого из муниципалитетов, где он смог быть усыновленным. COUNT (*) adminte больше выборов? как мочь доставать имя, чтобы мочь проверять, вмещается ли он правильные животные? –  lorduncan 19.11.2016, 23:28

Не sГ© очень хорошо, поскольку ты определил базу данных, но со следующим cГіdigo, функционирует то, что ты хочешь:

CREATE TABLE animales(
    id INT NOT NULL PRIMARY KEY, 
    nombre VARCHAR(35), 
    especie INT, 
    incenter INT
);

CREATE TABLE entradas(
    id INT NOT NULL PRIMARY KEY, 
    id_animal INT, 
    municipio INT
);


SELECT COUNT(*), municipio 
FROM animales a JOIN entradas e ON a.id=e.id_animal 
WHERE incenter=1 AND especie=2 GROUP BY municipio;

min () не ты deberГ, - чтобы быть надо. Если ты приносишь всю пользу, он не будет быть в двух муниципалитетах в то же время следовательно incenter=1 уже выдаст тебя, из-за которого estГЎ в настоящее время. В самом деле, если ты вмещаешься mГ-nimo id_entrada, и животное изменилось несколько раз муниципалитета, не contarГЎ никакой tupla, так как incenter в mГ-nimo serГ - в 0.

0
ответ дан 24.11.2019, 12:30
  • 1
    Привет Пабло, incenter - это, чтобы знать, находится ли животное в центре а следовательно он стоит 0 или 1. То, в чем нуждается клиент, он состоит в том, чтобы знать о животных, которые находятся в центре, все те из них приходят, которого муниципалитеты. Реестры ВВОДА у животного могут быть некоторые; смоги быть подобранным оригинально в coslada, принесен в центр (произведенный введенная муниципалитет Coslada), было принято кем-то из LasRosas и днями после быть возвращенным. С которым производится другой реестр в ПОСТУПАЮЩИХ ДАННЫХ, который не содержит источник Coslada. Я должен заносить в список это животное как внутри центра proviniente Coslada. –  lorduncan 20.11.2016, 00:54
  • 2
    SELECT (SELECT COUNT (*) введенные FROM e1 WHERE e1.municipio=e.municipio), муниципалитет, имя животные FROM во введенных JOIN и ON в id=e.id_animal WHERE incenter=1 AND especie=2; –  Pablo Hermida Mourelle 21.11.2016, 00:12
  • 3
    Это - то, что podrí схвати делать, чтобы доставать informació n, который ты хочешь, но не podrí схвати доставать все имена в ú nica tupla. Сейчас ты имеешь общее, как отображение этого в языке, который ты используешь, –  Pablo Hermida Mourelle 21.11.2016, 00:13

Как я выполняю эту консультацию в PHPMyAdmin, результаты - желанные. После только осталось бы проверять с php, если муниципалитет принадлежит настоящей колонне, чтобы складывать один в общее количество.

SELECT min(entradas.ID_entrada) as minimo, entradas.ID_entrada, animales.ID_animal, animales.nombre, entradas.municipio 
FROM entradas, animales 
WHERE animales.ID_animal = entradas.ID_animal AND animales.incenter =1 AND animales.especie =2
GROUP BY ID_animal
ORDER BY `animales`.`ID_animal` ASC
0
ответ дан 24.11.2019, 12:30