SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.04.2011 19:57:26

Kazanova
Участник
Зарегистрирован: 06.04.2011
Сообщений: 1

Сложный запрос.. помогите

Здравствуйте!

Я в основном программист и не очень хорошо знаю MYSQL, чтобы создать такой сложный запрос

Имеются несколько таблиц

Первая таблица a
------------------------------------------------
id | category | user | firma | status
------------------------------------------------
5  |     1        |  6    |   2     |    1
------------------------------------------------- 

Вторая таблица b
--------------------------
id | ad_id | field_id
--------------------------
1  |     5   |    15 
--------------------------
2  |     5   |    12
--------------------------

Третья таблица c
------------------------------------------------
id |  category |      name  | status
------------------------------------------------
13     1     subcategory     1
12     1     email     1
14     1     region     1
15     1     theme     1
16     1     name     1
17     1     circulation     1
18     1     language     1
19     1     age     1
20     1     format     1
21     1     amount_color     1
22     1     amount_black_white     1
23     1     returns     1
24     1     homepage     1
-------------------------------------------------

И четвертая таблица d
-----------------------------------------------------------------------
id | adfield_id |    language    | key       |    value
-----------------------------------------------------------------------
20 |    24          |     ru              | русский |   русский
21     25     ru     25     25
22     26     ru     A4     A4
23     27     ru     10     10
24     28     ru     30     30

Я не знаю сколько полей будет в конечном итоге,потому будет возможность добавлять новые поля. Также я не знаю сколько языков будет в конечном резуьтате - тоже будет возможность добавлять новые. Получаются таблицы с key и value. Теперь мне надо получить из таблицы a все возможные уникальные записи, которые бы содержали несколько полей в таблице d. То есть если поле имеет имя одно и значение другое и еще поле другое и значение. И только ЕСЛИ ОБА УСЛОВИЯ совпадают, то выдает из таблицы a одну строчку. Приведенный ниже пример выдает мне стоблцы из таблиц, но это не то..


SELECT `a`.`id`, `a`.`category`, `a`.`user`, `a`.`firma`, `b`.`field_id`, `c`.`name`, `d`.`value` FROM `advertising` AS `a` INNER JOIN `adfields` AS `b` ON a.id = b.ad_id INNER JOIN `fields` AS `c` ON b.field_id=c.id INNER JOIN `adfields_translations` AS `d` ON b.id=d.adfield_id WHERE (c.name = 'email' AND d.value = 'test@mail.ru') OR (c.name = "name" AND d.value = 'rannik')

Как сделать в mysql чтобы он отсеил из таблицы a строки, в которых не все условия выполняются? Извиняюсь за столь сумбурное изложение - вроде все понятно, но при попытке все это озвучить оказалось все не так легко

Неактивен

 

#2 08.04.2011 21:45:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Сложный запрос.. помогите

В том запросе, который Вы написали есть объединение b.id с d.adfield_id. Судя по
данным, которые Вы привели, таких строк нет, поэтому Вы и получаете пустую
выборку.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson