2013-04-14 1 views
1

У меня есть две таблицы. Один содержит статьи, другие ценовые котировки. Я пытаюсь выбрать [EAN] из таблицы статей и price из таблицы цитат, если размеры обеих таблиц совпадают.Как выбрать из таблицы с критериями, необходимыми для соответствия временной таблице?

Вот пример, я играю с:

DROP TEMPORARY TABLE IF EXISTS haha; 
CREATE TEMPORARY TABLE haha (
    tmp_kto VARCHAR(7) DEFAULT '' 
    , tmp_kz VARCHAR(3) DEFAULT '' 
    , tmp_preisliste VARCHAR(1) DEFAULT '' 
    , tmp_eg VARCHAR(3) DEFAULT '' 
    , tmp_length VARCHAR(3) DEFAULT '' 
    , tmp_width VARCHAR(3) DEFAULT '' 
    , tmp_price DECIMAL(10,2) DEFAULT 0.00 
    ) ENGINE=MEMORY; 

INSERT INTO haha (
    tmp_kz, tmp_kto, tmp_preisliste, tmp_eg, tmp_length, tmp_width, tmp_price 
    ) VALUES (
    "000","4316134","I","520","150","200","14.95" 
    ); 
INSERT INTO haha (
    tmp_kz, tmp_kto, tmp_preisliste, tmp_eg, tmp_length, tmp_width, tmp_price 
    ) VALUES (
    "001","112233","L","520","150","200","17.95" 
    ); 

критерии соответствия должны быть [EG] и [size]. Для size Мне нужно подстроить соответствующий размер вне поля (иначе, я думаю, формат составляет, например, 050x250 см).

SELECT ean, preis 
    FROM (
    SELECT a.ean AS ean 
      , h.tmp_price AS preis 
    FROM articles AS a 
    LEFT JOIN haha AS h 
     ON h.tmp_eg = a.eg 
     AND h.tmp_kz = "000" 
     AND h.tmp_kto = "0000000" 
     AND h.tmp_preisliste = "I" 
     AND h.tmp_length = SUBSTRING(a.size,1,3) 
     AND h.tmp_width = SUBSTRING(a.size,4,3) 
) AS temp; 

Что не работает.

Вопрос:
Что мне нужно изменить, чтобы сделать его работу?

EDIT
второй таблицы выглядит следующим образом:

CREATE TABLE `articles` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `ean` VARCHAR(35) NULL DEFAULT NULL, 
    `size` VARCHAR(35) NULL DEFAULT NULL, 
    `eg` VARCHAR(35) NULL DEFAULT NULL, 
PRIMARY KEY (`id`), 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB 
AUTO_INCREMENT=1; 

INSERT INTO articles (
    ean, size, eg 
    ) VALUES (
    "1111111111111","150x200cm","520" 
    ); 

INSERT INTO articles (
    ean, size, eg 
    ) VALUES (
    "2222222222222","150x220cm","520" 
    ); 

Спасибо за помощь!

+0

увы, запятая не хватает ... Давайте посмотрим, если это помогает – frequent

+0

где находится второй СТОЛ? –

+0

Я публикую несколько записей. 1мин- – frequent

ответ

1

Почему вы не используете просто так?

SELECT a.ean, h.tmp_price AS preis 
FROM articles AS a 
LEFT JOIN haha AS h 
    ON h.tmp_eg = a.eg 
WHERE h.tmp_kz = "000" 
    AND h.tmp_kto = "0000000" 
    AND h.tmp_preisliste = "I" 
    AND h.tmp_length = SUBSTRING(a.size,1,3) 
    AND h.tmp_width = SUBSTRING(a.size,4,3) 
+0

:-D Точно так же я придумал. Благодаря! – frequent

+0

вы приветствуете :)! –

0

легче, чем мысль:

SELECT a.ean AS ean, 
      h.tmp_price AS preis 
    FROM articles AS a 
    LEFT JOIN haha AS h 
    ON h.tmp_eg = a.eg 

    WHERE a.iln = "some_id" 
    AND h.tmp_kz = "000" 
    AND h.tmp_kto = "0000000" 
    AND h.tmp_preisliste = "I" 
    AND h.tmp_length = SUBSTRING(a.groesse,1,3) 
    AND h.tmp_width = SUBSTRING(a.groesse,5,3) 

 Смежные вопросы

  • Нет связанных вопросов^_^