Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 45

0
votes
answers
28 views
+10

JDBC嵌套while循環

1

那裏。 我是一個初學者使用java。我想爲我的SQL查詢結果做一個嵌套的while循環。JDBC嵌套while循環

我最初的結果就像下面,

eno ename title date_visit ssn   pname  charge  
103 Jekyl Doctor 20170717 946883650 Gershwin 125 
106 Ratchet Nurse 20170817 946883650 Gershwin 125 
103 Jekyl Doctor 20170917 946883650 Gershwin 182 
104 Caligari Doctor 20170707 831287780 Schubert 182 
106 Ratchet Nurse 20170930 799023031 Haydn 190 
102 Welby Doctor 20170818 416806352 Bernstein 210 
102 Welby Doctor 20170808 874136439 Brahms 245 
104 Caligari Doctor 20170808 796235486 Wagner 245 
102 Welby Doctor 20170929 445139565 Chopin 405 
102 Welby Doctor 20170910 874136439 Brahms 512 
103 Jekyl Doctor 20170910 524246868 Verdi 512 
103 Jekyl Doctor 20170909 129141378 Vivaldi 667 
103 Jekyl Doctor 20170909 524246868 Verdi 667 

,我寫我的Java語句像下面,

//Now we execute our query and store the results in the myresults object:  
    ResultSet myresults1 = stmt1.executeQuery("SELECT DISTINCT eno, ename, title FROM Staff_Activity"); 
    ResultSet myresults2 = stmt2.executeQuery("SELECT eno, ename, title, date_visit, ssn, pname, SUM(charge) AS total_charge FROM Staff_Activity GROUP BY eno, ename, title, date_visit, ssn, pname"); 

    System.out.println("Employee_ID	Employee_Name	Title"); 
    System.out.println("-----------	-------------	------"); //Print a header 

    while (myresults1.next()) { //pass to the next row and loop until the last   
     System.out.println(myresults1.getInt("eno") + "		" + myresults1.getString("ename") + "		" + myresults1.getString("title")); 

     while (myresults2.next()) { 
      if (myresults1.getInt("eno")==(myresults2.getInt("eno"))) { 
       System.out.println(myresults2.getInt("date_visit") + "		" + myresults2.getInt("ssn") + "		" + myresults2.getString("pname") + "		" + myresults2.getInt("total_charge")); 
      }//Print the current row 
     } 
     System.out.println(); 
    } 

我只得到了結果我的表中只有一名工作人員,

Employee_ID  Employee_Name Title 
-----------  ------------- ------ 
103    Jekyl   Doctor 
20170909    524246868    Verdi   667 
20170909    129141378    Vivaldi   667 
20170910    524246868    Verdi   512 
20170717    946883650    Gershwin    125 
20170917    946883650    Gershwin    182 

106    Ratchet   Nurse 

102    Welby   Doctor 

104    Caligari    Doctor 

真的想知道我的代碼有什麼問題。

在此先感謝。

沙发
0
2

第一次執行第二個循環時,它會到達myresults2的末尾;一旦發生這種情況,myresults2.next()將始終返回false,所以它只會在第一次運行。

如果ResultSet只是前向,則只能將光標位置重置爲開始位置,因此每次完全消耗ResultSet時都必須重新執行第二個查詢。

若要使ResultSet爲可滾動(不是隻轉發),因此無需重新執行查詢即可重置其光標位置,請參閱此示例:https://stackoverflow.com/a/8033197/6245535

另一個優化將是(優選使用一個PreparedStatement)代替總是檢查是否「ENO」代碼與if語句匹配來執行使用與從第一回路電流「ENO」一個WHERE子句過濾所述第二查詢。

+0

謝謝你的評論。當我嘗試使用PreparedStatement時工作得很好。 –

0
votes
answers
49 views
+10

如何輸出多個實體?(oracle sql)

1

我有兩個表。模型和汽車。以及用戶輸入的名稱和價格(存儲在AUTOMOBILES中)導出所有模型的過程。如何輸出多個實體?(oracle sql)

create or REPLACE procedure modelzz( VAR_MODEL IN MODELS.NAME_MODEL%TYPE, 
             VAR_PRICE OUT AUTOMOBILES.A_PRICE%TYPE) 
             as 
             begin 
SELECT a.A_PRICE 
INTO VAR_PRICE 
FROM AUTOMOBILES a 
join MODELS m 
on a.MODELS_ID_MODEL=m.ID_MODEL 
where m.NAME_MODEL=VAR_MODEl; 
dbms_output.put_line(VAR_MODEL||'''s price is : '||VAR_PRICE); 
END; 

過程的開始:

var v_modelzz varchar2; 
exec modelzz('&model_name',:v_modelzz); 

的問題是我要導出的所有實體的某型號。他們的一個以上,一個模型可以有兩個或更多的記錄。我知道這是不實際的。這只是測試。這裏的錯誤:exact fetch returns more than requested number of rows

沙发
0
1

您應該創建甲骨文型(我沒有測試此代碼,只是一個例子):

create type v_price_array 
as table of AUTOMOBILES.A_PRICE%TYPE ; 

變化過程的返回類型:

create or REPLACE procedure modelzz( VAR_MODEL IN MODELS.NAME_MODEL%TYPE, 
             VAR_PRICES OUT v_price_array) 

Or return created array type from function instead of procedure. 

而變化您的選擇:

SELECT a.A_PRICE 
BULK COLLECT INTO VAR_PRICES 
FROM AUTOMOBILES a 
join MODELS m 
on a.MODELS_ID_MODEL=m.ID_MODEL 
where m.NAME_MODEL=VAR_MODEl; 
dbms_output.put_line(VAR_MODEL ||''s price is : '||VAR_PRICE); 

第二種方法是在OUT參數sys_refcursor中返回。然後你必須打開程序中的光標:

create or REPLACE procedure modelzz( VAR_MODEL IN MODELS.NAME_MODEL%TYPE, 
             VAR_PRICES OUT SYS_REFCURSOR) 
             as 
             begin 
OPEN VAR_PRICES FOR 
SELECT a.A_PRICE 
FROM AUTOMOBILES a 
join MODELS m 
on a.MODELS_ID_MODEL=m.ID_MODEL 
where m.NAME_MODEL=VAR_MODEl; 
dbms_output.put_line(VAR_MODEL ||''s price is : '||VAR_PRICE); 
END; 

我推薦第二種方法。

+1

@ruveena感謝您的編輯 –

+0

如果解決方案正常工作,請返回反饋 –

11
votes
answers
25 views
+10

Sphinx: WARNING: Attribute count is 0: switching to none docinfo

I'm new to Sphinx and I can't seem to figure out what this warning is referring to or how to fix it. A google search didn't provide much information so I'm hoping a database guru here knows how to fix this.

Thanks!

up vote 11 down vote accepted favorite
沙发
+110
+50

There is nothing to be scared. The message says that the mode of additional attributes storing, which is set in the config file, will be turned off, due to absence of these attributes.

docinfo is the complete set of per-document attribute values.

Read more about this here http://sphinxsearch.com/docs/2.0.4/attributes.html

十分感謝! - 大衛瓊斯12月30日在20:38

更新鏈接:sphinxsearch.com/docs/current.html#attributes - 亞當2014年1月9日11:44

那麼如何擺脫這種警告呢?我不需要指定屬性。但每次我的cron啟動索引器時,它都會拋出此警告。如何壓制它? - 克里斯托弗K. 18年8月6日9:24

@ChristopherK。據我所知,沒有辦法壓制它。 - Maksym Polshcha 18年8月7日10:15

294
votes
answers
28 views
+10

How do I enable EF migrations for multiple contexts to separate databases?

How do I enable Entity Framework 5 (version 5.0.0) migrations for multiple DB contexts in the same project, where each context corresponds to its own database? When I run Enable-Migrations in the PM console (Visual Studio 2012), there's an error because of there being multiple contexts:

PM> Enable-Migrations
More than one context type was found in the assembly 'DatabaseService'.
To enable migrations for DatabaseService.Models.Product1DbContext, use Enable-Migrations -ContextTypeName DatabaseService.Models.Product1DbContext.
To enable migrations for DatabaseService.Models.Product2DbContext, use Enable-Migrations -ContextTypeName DatabaseService.Models.Product2DbContext.

If I run Enable-Migrations -ContextTypeName DatabaseService.Models.Product1DbContext I'm not allowed to run Enable-Migrations -ContextTypeName DatabaseService.Models.Product2DbContext because a migration already exists: Migrations have already been enabled in project 'DatabaseService'. To overwrite the existing migrations configuration, use the -Force parameter.

up vote 120 down vote accepted favorite
沙发
+1200
+50

第二次調用Enable-Migrations失敗,因為Configuration.cs文件已存在。如果重命名該類和文件,則應該能夠運行第二個Enable-Migrations,這將創建另一個Configuration.cs。

然後,您需要指定在更新時要使用的配置。數據庫。

  Update-Database -ConfigurationTypeName MyRenamedConfiguration  
     
			
        

什麼是“MyRenamedConfiguration”? - Robert Noack 2014年6月14日20:09

“MyRenamedConfiguration”只是佔位符文本作為示例。您可以將原始Configuration.cs重命名為任何內容(例如FooBar,然後運行Up​​date-Database -ConfigurationTypeName FooBar)。 - ckal 2014年6月16日13:35

縮短形式:Update-Database -conf MyRenamedConfiguration - Peter Kerr 16年11月8日17:22

+950

除了@ckal建議的內容之外,為每個重命名的Configuration.cs提供自己的命名空間是 critical 如果不這樣做,EF將嘗試將遷移應用到錯誤的上下文中。

以下是適合我的具體步驟。

如果遷移搞砸了,你想要創建新的“基線”:

  1. 刪除遷移文件夾中的所有現有.cs文件
  2. 在SSMS中,刪除__MigrationHistory系統表。

    創建初始遷移:

    1. 在軟件包管理器控制台中:

       啟用 - 遷移-EnableAutomaticMigrations -ContextTypeName NamespaceOfContext。ContextA -ProjectName ProjectContextIsInIfNotMainOne -StartupProjectName NameOfMainProject -ConnectionStringName ContextA    
    2. 在Solution Explorer中:將Migrations.Configuration.cs重命名為Migrations.ConfigurationA.cs。如果使用Visual Studio,這應該自動重命名構造函數。確保它確實如此。編輯ConfigurationA.cs:將命名空間更改為NamespaceOfContext.Migrations.MigrationsA

    3.  啟用 - 遷移-EnableAutomaticMigrations -ContextTypeName NamespaceOfContext.ContextB -ProjectName ProjectContextIsInIfNotMainOne -StartupProjectName NameOfMainProject -ConnectionStringName ContextB    
    4. 在Solution Explorer中:將Migrations.Configuration.cs重命名為Migrations.ConfigurationB.cs。同樣,請確保構造函數也已正確重命名。編輯ConfigurationB.cs:將命名空間更改為NamespaceOfContext.Migrations.MigrationsB

    5.   add-migration InitialBSchema -IgnoreChanges -ConfigurationTypeName ConfigurationB -ProjectName ProjectContextIsInIfNotMainOne -StartupProjectName NameOfMainProject -ConnectionStringName ContextB < / code>   
    6.   Update-Database -ConfigurationTypeName ConfigurationB -ProjectName ProjectContextIsInIfNotMainOne -StartupProjectName NameOfMainProject -ConnectionStringName ContextB    
    7. <預> <代碼>

#4更改:編輯ConfigurationA.cs - >編輯ConfigurationB.cs - Brian Rizo 2014年3月6日16:21

@Biran:感謝您的注意。我編輯了答案。請注意,您也可以自己編輯答案。由於您尚未獲得2000聲譽,因此您對答复隊列的答案通常會快速完成,因此您的編輯可能會在幾分鐘內得到批准。 - Eric J. 2014年3月6日22:14

謝謝!這就是我所缺少的(命名空間)。 - William M. Rawls 2014年8月15日22:34

這可能會有所幫助,因為我不清楚如何在最初的步驟2和4中重命名:當您將Configuration.cs文件重命名為ConfigurationA.cs或ConfigurationB.cs時,重命名也應該導致類和它的構造函數也被重命名為ConfigurationA或ConfigurationB。無法重命名該類將導致運行add-migration命令時出現錯誤消息 - “在程序集中找不到遷移配置類型'ConfigurationA''...'” - 是的,措辭很糟糕就像在我在VS2013中獲得的錯誤消息 - LOL - Greg Barth 2015年1月20日0:32

這對我有所幫助!包含所有選項和訂單的完整說明。救了我幾個小時 - elcool 2015年9月8日6:21

+710

我遇到了同樣的問題,我使用了以下解決方案(全部來自軟件包管理器控制台)

  PM&gt; Enable-Migrations -MigrationsDirectory“MigrationsContextA”-ContextTypeName MyProject.Models.ContextA PM&gt; Enable-Migrations -MigrationsDirectory“MigrationsContextB”-ContextTypeName MyProject.Models.ContextB   

這將在Migrations文件夾中創建2個單獨的文件夾。每個都包含生成的 Configuration.cs 文件。不幸的是,您仍然需要重命名那些 Configuration.cs 文件,否則會有關於其中兩個文件的投訴。我將我的文件重命名為 ConfigA.cs ConfigB.cs

< strong>編輯 :(由Kevin McPheat提供)請記住,在重命名Configuration.cs文件時,還要重命名類名稱和構造函數 / EDIT

使用此結構,您可以只需做

  PM&gt; Add-Migration -ConfigurationTypeName ConfigA PM&gt; Add-Migration -ConfigurationTypeName ConfigB   

這將為配置文件旁邊的文件夾中的遷移創建代碼文件(將這些文件保存在一起很好)

 <代碼> PM&GT; Update-Database -ConfigurationTypeName ConfigA PM&gt; Update-Database -ConfigurationTypeName ConfigB   

最後但並非最不重要的是,這兩個命令會將正確的遷移應用到他們的反複數據庫。

編輯2016年2月8日:我已經使用EF7版本7.0.0進行了一些測試-rc1-16348

我無法使-o | --outputDir選項起作用。它一直在給 Microsoft.Dnx.Runtime.Common.Commandline.CommandParsingException:無法識別的命令或參數

然而,它看起來像是第一次添加遷移時它被添加到遷移文件夾以及後續遷移的另一個上下文會自動放入遷移的子目錄中。

原始名稱 ContextA 似乎違反了某些命名約定,所以我現在使用 ContextAContext ContextBContext 使用這些名稱,您可以使用以下命令:(請注意,我的dnx仍然可以從包管理器控制台運行,我不想打開單獨的CMD窗口進行遷移)

  PM&gt; dnx ef migrations添加Initial -c“ContextAContext”PM&gt; dnx ef migrations添加初始-c“ContextBContext”  

這將在 Migrations 文件夾中為 ContextAContext 它將為 ContextBContext

創建一個名為 ContextB 的文件夾,其中包含這些文件。我手動添加了 ContextA 文件夾並移動了遷移來自的文件 ContextAContext 到該文件夾中。然後我在這些文件中重命名了命名空間(快照文件,初始遷移,並註意初始遷移文件下有第三個文件... designer.cs)。我不得不將 .ContextA 添加到命名空間,然後框架再次自動處理它。

使用以下命令將為每個上下文創建一個新的遷移 <預> <代碼> PM&GT; dnx ef migrations添加Update1 -c“ContextAContext”PM&gt; dnx ef migrations添加Update1 -c“ContextBContext”

,生成的文件放在正確的文件夾中。 初始遷移並註意初始遷移文件下有第三個文件... designer.cs)。我不得不將 .ContextA 添加到命名空間,然後框架再次自動處理它。

使用以下命令將為每個上下文創建一個新的遷移 <預> <代碼> PM&GT; dnx ef migrations添加Update1 -c“ContextAContext”PM&gt; dnx ef migrations添加Update1 -c“ContextBContext”

,生成的文件放在正確的文件夾中。 初始遷移並註意初始遷移文件下有第三個文件... designer.cs)。我不得不將 .ContextA 添加到命名空間,然後框架再次自動處理它。

使用以下命令將為每個上下文創建一個新的遷移 <預> <代碼> PM&GT; dnx ef migrations添加Update1 -c“ContextAContext”PM&gt; dnx ef migrations添加Update1 -c“ContextBContext”

,生成的文件放在正確的文件夾中。 使用以下命令將為每個上下文創建一個新的遷移

  PM&gt; dnx ef migrations添加Update1 -c“ContextAContext”PM&gt; dnx ef migrations添加Update1 -c“ContextBContext”  

,生成的文件放在正確的文件夾中。 使用以下命令將為每個上下文創建一個新的遷移

  PM&gt; dnx ef migrations添加Update1 -c“ContextAContext”PM&gt; dnx ef migrations添加Update1 -c“ContextBContext”  

,生成的文件放在正確的文件夾中。

最好的解決方案,簡單,我們保持一個清晰的文件夾。 - Malick 2015年11月5日14:34

這就是我需要的答案。通過-MigrationsDirectory添加的命名空間就是答案!謝謝。 - Crob於2016年5月18日21:10

乾淨整潔的解決方案。謝謝。 - Stefan Cebulak 2016年11月13日16:23

1。5年後,我很高興我可以使用自己的帖子來設置一個新項目。 - 巴特於2017年4月19日7:51

請注意,當您運行add-migration時,它會提示您輸入Name。由於我已經提供了ConfigurationTypeName並且剛剛說出名字時有點惱火,這讓我略微離開了。但當然,它想要的名稱是對變化的“人類可讀”描述 - 例如。AddedProducts或IncreaseLengthOfNameFields。在Migrations文件夾中,您將把它作為類名的一部分,因此很容易看出它是什麼。所以實際上名稱有點像簽到評論。 - Simon_Weaver 17年5月5日凌晨4點20分

+70

如果您已經有一個包含許多遷移的“配置”並希望保持原樣,您可以隨時創建一個新的“配置”類,給它另一個名稱,如

  class MyNewContextConfiguration:DbMigrationsConfiguration&lt; MyNewDbContext&gt; {...}   

然後只發出命令

  Add-Migration -ConfigurationTypeName MyNewContextConfiguration InitialMigrationName   

EF將毫無問題地支持遷移。最後更新你的數據庫,從現在開始,如果你不告訴他你要更新哪個配置,EF會抱怨:

  Update-Database -ConfigurationTypeName MyNewContextConfiguration  
     
			
        
+10

如果存在更多數據庫,請在PowerShell中使用以下代碼

  Add-Migration Starter -context EnrollmentAppContext   
  • 'Starter'是遷移名稱

  • 'EnrollmentAppContext'是我的應用程序的名稱上下文

    您可以通過執行以下操作在VS中打開PowerShell: code> Tools-&gt; NuGet Package Manager-&gt; Package Manager Console

0

在PowerShell中更新數據庫類型以下代碼...

  Update-Database -context EnrollmentAppContext   

*如果只存在多個數據庫這個代碼,否則沒必要..

0
votes
answers
30 views
+10

用於排序的頂點中心索引

1

假設我有具有許多邊的超節點,並且希望快速返回給定節點的頂N邊。我怎樣才能做到這一點與arangodb頂點中心索引https://docs.arangodb.com/3.1/Manual/Indexing/VertexCentric.html用於排序的頂點中心索引

我可以創建skiplist頂點爲中心的指數

arangosh> db.collection.ensureIndex({ type: "skiplist", fields: [ "_from", "points" ] }) 

,但優化器不排序的查詢

FOR edge IN collection 
    FILTER edge._from == "vertices/123456" 
    SORT edge.points DESC 
    LIMIT 0, 10 
    RETURN edge 

看來還阿朗戈優化不拿起skiplist頂點爲中心的指數把它撿起來但是在遍歷語法中,文檔說它應該:

FOR v, e, p IN 3..5 OUTBOUND @start GRAPH @graphName 
    FILTER p.edges[*].points ALL >0 
    RETURN v 
+0

是否回暖的指數,如果你改變穿越深度爲' 1..5'或'1..1'? – CoDEmanX

+0

nope。它不是 – irriss

+0

請在GitHub上報告:https://github.com/arangodb/arangodb/issues/new。包括軟件版本以及可能的數據集。使用具有特定值分佈的完全相同的數據很重要,因爲基於選擇性估計,頂點中心索引並不總是優於默認邊索引。 – CoDEmanX

沙发
0
0

快速返回頂部N條邊給定節點

這將是更好的開始節點:

FOR v, e IN 1..1 ANY @start @edges 
    SORT e.points DESC 
    LIMIT 10 
    RETURN e 

這應該是一樣好,你可以使用當前版本得到( 3.3)的ArangoDB,假設你讓ArangoDB索引_from - 我懷疑爲.points添加跳過列表會產生任何(有益的)區別,除非你可能在FILTER中使用它。

(我相信索引_from使用skiplist將是不明智的在這裏。如果edges是一個邊集合,它都已經被正確索引。)

+0

不幸的是,它不能這樣工作。使用標準的邊緣索引,它可以非常快速地找到給定節點的所有邊,但是它必須對它們進行迭代和排序。如果是超級節點,可能需要幾秒鐘。 – irriss

+0

@Ruslan - 我試圖澄清我的答案。如果你可以添加一個FILTER(例如.points> 0),那麼當然這可能會有所幫助。你能告訴我們在這個節點有多少條邊,你的各種查詢需要多長時間,以及我提出的查詢需要多長時間? – peak

0
votes
answers
35 views
+10

是否在CA-central-1區域中提供AWS Aurora for PostgreSQL?

1

我試圖通過亞馬遜的網絡界面在ca-central-1(加拿大)設置一個Aurora PostgreSQL數據庫,但儀表板只給我選擇Aurora MySQL的選項。是否在CA-central-1區域中提供AWS Aurora for PostgreSQL?

Aurora PostgreSQL兼容實例在加拿大還沒有提供,或者這是亞馬遜網絡界面中的錯誤?

沙发
0
2

Aurora Postgres SQL兼容性實例在加拿大尚未提供。您可以參考pricing page來查找各個數據庫引擎的可用性。

0
votes
answers
32 views
+10

SQLite執行錯誤

0

我正在學習SQLite,並試圖創建一個字符串來存儲值並使用下面我的程序中提取的代碼行來檢索行,但是我不斷得到一個錯誤「execute()不帶關鍵字參數「。我不明白,因爲sqlite3的DB API表示,這是引用數據庫中的正確方式:SQLite執行錯誤

import sqlite3 
dbb = sqlite3.connect('finance.db') 
db = dbb.cursor() 
username = request.form.get("username") 

#query database for username 
rows = db.execute("SELECT * FROM users WHERE username = :username",  
username=username) 
沙发
0
0

documentation說:

sqlite3模塊支持兩種佔位符:問題標記(qmark樣式)和命名佔位符(命名樣式)。

下面是兩種風格的例子:

# This is the qmark style: 
cur.execute("insert into people values (?, ?)", (who, age)) 

# And this is the named style: 
cur.execute("select * from people where name_last=:who and age=:age", {"who": who, "age": age}) 

關鍵字參數不被支持。然而,你可以明確地將它們轉換成字典(或寫一個execute這樣做的包裝):

db.execute("SELECT ... :username", dict(username = username)) 
+0

謝謝,我錯過了那一點。 qmark風格完美適用於我尚未考慮的模板方法。 – tiff

0
votes
answers
33 views
+10

如何在SQL Server中使用self Join來在單個表上映射子父項?

1

我有以下表格與子女父母的關係。如何在SQL Server中使用self Join來在單個表上映射子父項?

ID  Title    PageID IsParent ParentID IsActive 
1  Dashboard   2125 True  NULL  True 
2  Site Analytics  22  False  NULL  True 
3  SEO Management  1  NULL  NULL  True 
4  Mail Management  32  NULL  NULL  True 
5  Build Mobile App 3214 NULL  NULL  True 
6  Market Analytics 1321 NULL  NULL  True 
7  Customize   235345 NULL  NULL  True 
8  Reporter   253  NULL  NULL  True 
9  Editor    545  NULL  NULL  True 
10  News Template  45  NULL  NULL  True 
11  Test Menu   0  True  3   True 
NULL NULL    NULL NULL  NULL  NULL 

這裏ParentID定義了父母和孩子之間的關係。例如,在上面的表測試菜單Site Analytics的孩子。我有以下SQL查詢。

SELECT 
     P.ID 
     ,P.Title AS Parent 
     ,C.Title AS Child 
     ,P.PageID 
     ,P.IsParent 
     ,P.ParentID 
     ,P.IsActive 
     FROM [dbo].[ChildParent] P 
     LEFT JOIN [dbo].[ChildParent] C ON P.ID = C.ParentID 

以下是輸出結果。

1 Dashboard   NULL   2125 1  NULL 1 
2 Site Analytics  NULL   22  0  NULL 1 
3 SEO Management  Test Menu  1  NULL NULL 1 
4 Mail Management  NULL   32  NULL NULL 1 
5 Build Mobile App NULL   3214 NULL NULL 1 
6 Market Analytics NULL   1321 NULL NULL 1 
7 Customize   NULL   235345 NULL NULL 1 
8 Reporter   NULL   253  NULL NULL 1 
9 Editor    NULL   545  NULL NULL 1 
10 News Template  NULL   45  NULL NULL 1 
11 Test Menu   NULL   0  1  3  1 

基本上,我想實現的是:

1 Dashboard   NULL   2125 1  NULL 1 
2 Site Analytics  NULL   22  0  NULL 1 
3 SEO Management  NULL   1  NULL NULL 1 
4 Mail Management  NULL   32  NULL NULL 1 
5 Build Mobile App NULL   3214 NULL NULL 1 
6 Market Analytics NULL   1321 NULL NULL 1 
7 Customize   NULL   235345 NULL NULL 1 
8 Reporter   NULL   253  NULL NULL 1 
9 Editor    NULL   545  NULL NULL 1 
10 News Template  NULL   45  NULL NULL 1 
11 Test Menu   SEO Management 0  1  3  1 
沙发
0
1

你向後做。

FROM [dbo].[ChildParent] P 
    LEFT JOIN [dbo].[ChildParent] C ON P.ParentID = C.ID 
板凳
0
1

在查詢試試這個小變化:

SELECT 
     P.ID 
     ,P.Title AS Parent 
     ,C.Title AS Child 
     ,P.PageID 
     ,P.IsParent 
     ,P.ParentID 
     ,P.IsActive 
     FROM [dbo].[ChildParent] P 
     LEFT JOIN [dbo].[ChildParent] C ON isnull(P.ParentID, P.ID) = c.id and C.ParentID is not null 
+0

此查詢不工作,因爲我期望:) –

+0

@KiranShahi:你能提供更多的細節?它給了多少不同的結果? –

+0

這將返回所有子列NULL –

0
votes
answers
25 views
+10

Are MongoDB and CouchDB perfect substitutes?

I haven't got my hands dirty yet with neither CouchDB nor MongoDB but I would like to do so soon... I also have read a bit about both systems and it looks to me like they cover the same cases... Or am I missing a key distinguishing feature?

I would like to use a document based storage instead of a traditional RDBMS in my next project. I also need the datastore to

  • handle large binary objects (images and videos)
  • automatically replicate itself to physically separate nodes
  • rendering the need of an additional RDBMS superfluous

Are both equally well suited for these requirements?

Thanks!

0
votes
answers
24 views
+10

無法選擇圖片並上傳?

0

我正在自學FireBase存儲,並決定製作一個簡單的應用程序,讓用戶選擇一個圖像,然後將其上傳到Firebase。 但是,只要我選擇要上傳的圖片,我的應用程序崩潰,並且說我的URI爲空,即使我得到它從我的形象選擇無法選擇圖片並上傳?

Full stacktrace

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode != RESULT_OK) { 
      return; 
     } 
     if (requestCode == 1) { 
      final Bundle extras = data.getExtras(); 
      if (extras != null) { 
       //Get image 
       path = extras.getParcelable("data"); 
      } 
      StorageReference storageRef = FirebaseStorage.getInstance().getReference(); 
      storageRef.putFile(path) 
        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
          // Get a URL to the uploaded content 
          @SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
          Log.e("myTag", "done, " +downloadUrl); 
          Intent sharingIntent = new Intent(Intent.ACTION_SEND);  
         } 
        }) 
        .addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception exception) { 
          Log.e("myTag", exception.toString()); 
         } 
        }); 
     } 
    } 

我我一直試圖解決這個錯誤超過五個小時,儘管經歷了十億次文檔,我仍然感到困惑。任何幫助表示讚賞!

沙发
0
0

選定的Uri返回the dataIntent,不作爲額外的。試試這個改變:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode != RESULT_OK) { 
     return; 
    } 
    if (requestCode == 1) { 
     path = data.getData(); // assumes path is declared as a Uri 
     StorageReference storageRef = FirebaseStorage.getInstance().getReference("images"); 
     storageRef.putFile(path)... 
+0

非常感謝你的回答!我試過了,現在我的異常變成了'無法上傳到getRoot。你應該上傳到一個存儲位置,如.getReference('image.png')。putFile ...' –

+0

我也嘗試調整firebase中的規則,以允許閱讀和權利一如既往,但我仍然得到這個錯誤。我該怎麼辦? –

+0

@RuchirBaronia:我更新了我的答案。創建你的引用到根的子文件夾,例如「images」:'StorageReference storageRef = FirebaseStorage.getInstance()。getReference(「images」)' –