2013-11-13 5 views
0

У меня есть две таблицыОшибка выборки данных из базы данных

CREATE TABLE `reg_data` (
    `date` varchar(10) NOT NULL, 
    `session` varchar(10) NOT NULL, 
    `time` time default NULL, 
    `temp_air` float NOT NULL, 
    `rel_humid` float NOT NULL, 
    `soil_temp_5` float NOT NULL, 
    `soil_temp_20` float NOT NULL, 
    `soil_temp_30` float NOT NULL, 
    `soil_temp_60` float NOT NULL, 
    `air_pressure` float NOT NULL, 
    `anem_reading` float NOT NULL, 
    `dry_temp` float NOT NULL, 
    `wet_temp` float NOT NULL, 
    PRIMARY KEY (`date`,`session`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

и

CREATE TABLE `reg_data3` (
    `date` varchar(10) NOT NULL default '', 
    `time` time NOT NULL, 
    `rainfall` float default NULL, 
    `evep` float default NULL, 
    `max_temp` float default NULL, 
    `min_temp` float default NULL, 
    `sunshine_hrs` float default NULL, 
    PRIMARY KEY (`date`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

Я хочу присоединиться к этим двум таблицам с использованием date ='".$full." передается от $full=$month.'/'.$day.'/'.$year;.

Мой запрос:

$sql ="(select A.date,A.rainfall,A.evep, A.max_temp, A.min_temp, A.sunshine_hrs,B.run , B.velocity From reg_data3 A ,velocity B where A.date=B.date ORDER by A.date) WHERE date ='".$full."' ; 

Что случилось с этим запросом?

+0

Тот факт, что вы не используете JOIN? – Shomz

+1

@Shomz: Это неявное соединение. Не хорошая практика, но не инвалид. – Travesty3

+0

@ Travesty3 Тогда у меня вопрос не возникает ... 'WHERE A.date = B.date AND A.date = '". $ Full. "''? – Shomz

ответ

1

Постарайтесь избавиться от круглых скобок в своем запросе и положите date = '". $full . "' после вашего первого предложения WHERE с AND.

Кроме того, необходимо указать, какую таблицу date столбца использовать для date = '". $full . "', так изменить, что A.date = '". $full . "'

$sql ="select A.date,A.rainfall,A.evep, A.max_temp, A.min_temp, A.sunshine_hrs,B.run , B.velocity From reg_data3 A,velocity B where A.date=B.date AND A.date ='".$full."' ORDER by A.date; 

Я хотел бы также предложить форматирование запроса и с помощью явного присоединяется вместо имплицитных:

$sql = " 
    SELECT 
     A.date, 
     A.rainfall, 
     A.evep, 
     A.max_temp, 
     A.min_temp, 
     A.sunshine_hrs, 
     B.run, 
     B.velocity 
    FROM 
     reg_data3 A 
     INNER JOIN velocity B 
      ON A.date = B.date 
    WHERE 
     A.date = '". $full ."' 
    ORDER BY 
     A.date /* this is pointless...they're all going to be the same date */ 
"; 
+0

Спасибо, сэр спасибо, что это хорошо работает – user2963060

+0

A.date = '". $ Full."' Должно быть – user2963060

+0

Рад слышать, как это сработало для вас. Убедитесь, что [отметьте это как ваш принятый ответ] (http://meta.stackexchange.com/a/5235/147164). Благодаря! – Travesty3

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