我試圖與加入該查詢應該工作如下:查詢,加入和返回的ID從MySQL
- 成像的用戶的搜尋框輸入一個手機號碼或姓名。
- 結果應該是返回與下面兩個表中的搜索匹配的數據。
我想JOIN
並返回其中ID
從CUSTOMER表(id
)和TASK表(customer_id
)是相同的數據。
我下面$sql
查詢將返回TASK表正確的任務(一個或多個)數據([customer_id] => 5
),但它總是從CUSTOMER表返回ID 1時,它應該從CUSTOMER表)返回ID 5。
我無法弄清楚我做錯了什麼?
我的SQL查詢例:
$sql = ("SELECT * FROM customer, task WHERE customer.id = task.customer_id LIKE 5 ");
我的客戶表信息:
CREATE TABLE `customer` (
`id` int(40) NOT NULL AUTO_INCREMENT,
`name` varchar(40) NOT NULL DEFAULT '',
`mobil` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL DEFAULT '',
`Messages` varchar(200) NOT NULL DEFAULT '',
`adr` varchar(50) NOT NULL DEFAULT '',
`zip` int(4) NOT NULL,
`date_created` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
我的任務表信息:
CREATE TABLE `task` (
`task_id` int(40) NOT NULL AUTO_INCREMENT,
`user_id` int(40) NOT NULL,
`customer_id` int(40) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`task_id`),
KEY `customer_id` (`customer_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `task_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`),
CONSTRAINT `task_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
讓我想起這個查詢實際上是在所有的執行;猜猜MySQL解析器是相當寬容的。在一個側面說明,也許跳過'LIKE'to,因爲你可能會使用平等'=':) – jpw 2014-10-29 14:27:57
@jpw我不是MySQL的粉絲,這就是爲什麼(這個視頻涵蓋了一些其他人:https://www.youtube.com/watch?v = emgJtr9tIME) – 2014-10-29 14:41:58
事實上,我以前看過那個視頻,有些可怕的東西...... Postgresql似乎是開源dbms更好的選擇。 – jpw 2014-10-29 14:42:49