簡體   English   中英

SQL連接在左表中顯示重復項

[英]SQL join showing duplicates in left table

我正在建立一個汽車租賃系統,我有2張桌子,一張用於租車,另一張用於租車。 我只希望表1中的所有內容顯示一次,而表2中的所有內容都顯示在表1下。

假設我的表格如下所示:

表格1

  • ID
  • 汽車
  • 模型

表2

  • id(與表1 id相同)
  • 租金開始
  • 止租
  • renttimestart
  • renttimestop`

我希望將其顯示在表格中:

  • Carid(t1)/ car(t1)/ model(t1)
  • rentstart(t2)-rentstop(t2)/ renttimestart(t2)-Renttimestop(t2)

例:

  • 1 /寶馬/ 32​​0
  • 14.3.2013-14.3.2013 / 13:30-14:30
  • 15.3.2013-15.3.2013 / 8:00-13:00

  • 2 /奧迪/ A4

  • 15.3.2013-15.3.2013 / 8:00-13:00

這就是我現在所擁有的:

 $sqlquery = 
  "SELECT * FROM table1 
   LEFT JOIN table2 ON table1.id=table2.id 
   GROUP BY table1.id";

(對不起,我的格式)

您將需要首先執行查詢,如下所示:

$sqlquery = "SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id";

這將提供每個id需要的所有記錄(多行)。 然后,您需要使用一條語句(for,foreach等)來過濾php中的記錄。

流程如下:

  1. 執行查詢
  2. 然后foreach記錄檢查id,如果id與先前的id或0不同,則回Carid(t1) / car(t1) / model(t1)
  3. 否則回rentstart(t2)-rentstop(t2) / renttimestart(t2)-Renttimestop(t2)

希望你能明白。

如果您只想列出所有汽車並提供所有相應的汽車租賃,則應使用某種循環。 由於您沒有提供正在使用的數據庫,因此我只能給您偽代碼:

 $sqlquery = "SELECT * FROM table1";
 *execute query*
 while ($car = *fetch*) {
     *print car data*
     $sqlquery = "SELECT * FROM table2 where id = ?";
     *execute inner query with parameter binding: $car["id"]*
     while ($rent = *fetch*) {
         *print rent data*
     }
 }

一般提示:在第二個表上使用主鍵,並將“ id”重命名為“ carid”。 避免混亂。

如果要在sql中完成所有操作,則可以創建存儲過程:

declare @Table1 table
(
  Id int, 
  Car  varchar(100), 
  Model  varchar(100)
)
Insert into @Table1 values
Select ID,Car,model From Table1

Declare @Temp Table
(
    FinalValue varchar(300)
)

Declare @id int

While ((Select Count(*) From @Table1)>0)
Begin
 Set @id =(Select Top 1 id From @Table1)
 Insert Into @Temp 
 Select cast(id as varchar(5))+'/'+car+'/'+model From @Table1 Where Id=@id

 Insert @Temp Select rentstart+'-'+rentstop +'/'+ renttimestart+'-'+Renttimestop From Table2 Where Id=@id

 Delete From @Table1 Where Id=@id
End

Select * From @Temp

輸出:

1/BMW /320
14.3.2013-14.3.2013/13:30-14:30
15.3.2013-15.3.2013/8:00-13:30
2/Audi/A4
15.3.2013-15.3.2013/8:00-13:30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM