簡體   English   中英

關系數據庫和自動遞增

[英]relational databases and auto incrementing

您好,我正在嘗試為我正在創建的書評系統鏈接兩個數據庫

例如,我有一個書籍表,我也有另一個類別表。

圖書表將存儲所有不同的圖書,並使用genre_id鍵或其他內容使用其所屬類型的外鍵。

當我查詢類型時,我希望它顯示該類型中有多少本書,例如幻想類型中的2本書。

為此,我需要一個記錄列? 但是,當添加或刪除新記錄時,如何進行自動遞增/刪除?

編輯:

哇,謝謝您這么快的幫助,所以我知道我不需要單獨的記錄表,但是說我希望它可以與此一起使用

function all_get() { 
    $this->load->database(); 
    $sql = 'SELECT * FROM books;'; 
    $query = $this->db->query($sql); 
    $data = $query->result();
    $this->response($data, 200); 
}

我將如何查詢以顯示每種類型的記錄,而不是分別顯示所有單獨的書?

您不需要記錄列。 您可以查詢與每種流派相關的書籍數量:

SELECT count(*) FROM Book WHERE genre_id = :genreId;

順便說一句,在您開始之前,您可能需要重新考慮您的實體關系。 類型<->書真的是1:n嗎?

編輯:我可能會誤解了,起初我以為這實際上是兩個獨立的問題-一個關於創建自動遞增主鍵,另一個關於如何顯示每種類型的書數。

計數

在顯示每種流派的書籍數量以及流派名稱時,我認為您正在尋找以下內容:

SELECT g.genreName, count(*) from books b
JOIN genres g on g.ID = b.genreID
GROUP BY g.genreName

SQL小提琴: http ://sqlfiddle.com/#!2 / a3c45e / 2

自動遞增

正如其他人已經評論過的那樣,您不需要單獨的記錄表,但是如果您仍然需要有關自動遞增主鍵的幫助,這是W3學校的最基本示例:

CREATE TABLE Persons
(
 ID int NOT NULL AUTO_INCREMENT,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Address varchar(255),
 City varchar(255),
 PRIMARY KEY (ID)
)

暫無
暫無

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

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