2013-02-01 17 views
0

我無法找到此問題的解決方案。在PHP中爲這個問題建議任何解決方案。如何使用SQL查詢爲PHP添加自己的行選擇記錄MYSQL使用

我有一個名爲test_repeat

id start repeater length  final 
1 20  2   3   50 
2 10  50   4  500 

表和我的查詢是

SELECT T.id AS ID, T.start AS start, T.repeater AS repeater 
     T.length AS length, T.final AS final 
FROM `test_repeater` T 
RIGHT JOIN `test_repeater` T2 ON T.id = T2.id 
WHERE T.start>=10 and T2.start*T2.repeater<=300 

我得到的結果是

ID start repeater length final  
1 20  2   3  50  
2 10  5   12  500  

我想獲得的是導致每個起始值與中繼器一起添加,並將該值作爲下一個原始值直到fi最終的報考條件(請參見下文)

我的夢想的結果會是這樣

ID start repeater length  final 
    1  20  2   3   50 
    1  22  2   3   50 
    1  24  2   3   50 
    1  ...  .   .   ... 
    1  ...  .   .   ... 
    1  50  2   3   50 
    2  10  5   4   500 
    2  15  5   4   500 
    2  20  5   4   500 
    2  25  5   4   500 
    2  30  5   4   500 
    2  35  5   4   500 
    2  ...  .   .   ... 
    2  ...  .   .   ... 
    2  ...  .   .   ... 
    2  500  5   4   500 
+0

一些線程標題讓我感到頭暈 – asprin

+0

嘗試用'UNION',而不是'權join' – jcho360

+0

10 * 5 = 50,但隨後你怎麼到100? – Strawberry

回答

1

確定。更有意義......

DROP TABLE IF EXISTS test_repeat; 

CREATE TABLE test_repeat 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,start INT NOT NULL 
,repeater INT NOT NULL 
,length  INT NOT NULL 
,final INT NOT NULL 
); 

INSERT INTO test_repeat VALUE 
(1, 20  ,2   ,3   ,50), 
(2 ,10  ,5   ,4  ,500); 


DROP TABLE IF EXISTS ints; 

CREATE TABLE ints(i INT NOT NULL PRIMARY KEY); 

INSERT INTO ints VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); 



SELECT r.id 
     , r.start+(r.repeater*(i2.i*10+i1.i)) start 
     , repeater 
     , length 
     , final 
    FROM test_repeat r 
    JOIN ints i1 
    JOIN ints i2 
    WHERE r.start+(r.repeater*(i2.i*10+i1.i)) BETWEEN r.start AND r.final 
    ORDER 
    BY id 
     , start; 
+0

現在我交配我發現由此獲得的結果幾乎相同,但不是確切的,我發現2異常(1)..它不是從確切的表的起始值開始,(2)..當它來到下一個ID時,結果行從先前的ID開始((爲便於使用)) - >> ID 1的記錄應該從20(+2 s)到50 [50記錄]開始,ID 2的記錄從10(+5 s)開始到500 [100記錄] ..總共150(apr。)re線...人可以請任何移動到達那裏... thanx提前.. – tradebel123

+0

你有沒有看到我是如何提供DDLs(CREATE和INSERT語句)讓其他人跟隨?做到這一點,並像以前一樣展示理想的結果。 – Strawberry

+0

是的,我做到了這一點,我仍然無法達成最終..請請做更多的東西..細節 – tradebel123

0
SELECT T.id AS ID, T.start*T.repeater AS mymultipliedstart, 
      T.length AS length, T.final AS final 
    FROM `test_repeater` T 
    RIGHT JOIN `test_repeater` T2 ON T.id = T2.id 

WHERE T.start>=10 and T2.start*T2.repeater<=300 
+0

一些解釋與代碼可能有助於這個答案 – dove

相關問題