2010-08-18 35 views
-3

你可以告訴如何在PHP和MySQL腳本改變這樣的結果:PHP:如何更改字符串數據將成爲數字數據

Model     Class 
Ball      S 
Book      A 
Spoon 
Plate      B 
Box       C 

這是我的DB:

CREATE TABLE IF NOT EXISTS `inspection_report` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `Model` varchar(14) NOT NULL, 
    `Serial_number` varchar(8) NOT NULL, 
    `Lot_no` varchar(6) NOT NULL, 
    `Line` char(5) NOT NULL,  
    `Class` char(1) NOT NULL, 
    `Status` varchar(6) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `Model` (`Model`,`Serial_number`,`Lot_no`,`Line`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=48 ; 

如何,如果我想以顯示如下結果:

Model   s  a  b  c 
Ball   1  0  0  0 
Book   0  1  0  0 
Spoon   0  0  0  0 
Plate   0  0  1  0 
Box    0  0  0  1 

什麼是查詢來做到這一點?謝謝。

+1

你要記下所有的結果,或者你真的只想顯示1或0。請澄清你的問題多一點。如果您希望查詢結果處於此格式,或者如果使用php重新格式化結果,您不會說。 – 2010-08-18 03:50:17

+0

我只是想顯示1或0,就像我的示例 – klox 2010-08-18 04:16:40

+0

Class和Model之間的關係是什麼? – 2010-08-27 06:48:05

回答

1
SELECT `Model`, 
IF(`Class`='S', 1, 0) AS `S`, 
IF(`Class`='A', 1, 0) AS `A`, 
IF(`Class`='B', 1, 0) AS `B`, 
IF(`Class`='C', 1, 0) AS `C` 
FROM `inspection_report` 
+0

woohooo ..這是一個簡單的答案,但非常非常棒..我錯過了..感謝很多.. – klox 2010-08-27 07:48:48

+0

謝謝。 Col Shrapnel確實有一點。我還不清楚爲什麼你想/需要這個。 – Mischa 2010-08-27 07:52:15

+0

yups我感謝你們所有人。我之所以這樣想,是因爲如果角色變成了數字,那將是一個計算。如果在字段「s」中找到的第一個或零將被乘以4.你知道我要瘋狂bcoz這個問題大概兩個星期.fiuh.doumo arigatou gozaimasu。 – klox 2010-08-27 07:56:30

0

你的問題有點不清楚,但我假設你有一個數組映射名稱爲缺陷的輸入數據,並且你希望每行在適當的列中有1個,而在其他地方爲零。如果是這樣,它只是這樣的:

$arr = array('blue' => 'S', 'red' => 'A', 'yellow' => null, 'green' => 'B', 'black' => 'C'); 

$defects = array_filter(array_unique(array_values($arr))); 
echo "name\t"; 
echo implode("\t", $defects); 
echo "\n"; 

foreach($arr as $name => $defect) { 
    echo "$name"; 
    foreach($defects as $test) { 
     echo "\t"; 
     echo $test == $defect ? 1 : 0; 
    } 
    echo "\n"; 
} 
+0

爲什麼'echo「$ name」'中的引號? – deceze 2010-08-18 04:04:25

+0

@deceze它最初是'echo'$ name \ t「;';我改變了它,並沒有刪除它們 – 2010-08-18 04:08:03

+0

我看,它只是我的寵物peeves ...;) – deceze 2010-08-18 04:13:15

0

非常粗略的例子,你可能會用HTML表格在現實中。

<?php // $rows = array(array('name' => 'blue', 'class_defect' => 'S'), ...); ?> 

<pre> 
name  s a b c 
<?php 
foreach ($rows as $row) { 
    printf('%-10s', $row['name']); // padding with spaces 
    foreach (array('s', 'a', 'b', 'c') as $col) { 
     echo (strtolower($row['class_defect']) == $col) ? 1 : 0; 
     echo ' '; // just padding again 
    } 
} 
?> 
</pre> 
相關問題