<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/74265.aspx</link><pubDate>Mon, 02 Sep 2013 03:39:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:74265</guid><dc:creator>Thiseas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/74265.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=74265</wfw:commentRss><description>Τι θα έλεγες να φτιάξεις ένα VIEW στα DeltiaAgoras (ας πούμε το vDeltiaAgoras) το οποίο θα περίεχει μέσα του (με inner join) και το περίφημο πεδίο IsDeleted του αντίστοιχου header, και αυτό το vDeltiaAgoras να "κοιτούν" όλα τα query σου;&lt;br&gt;</description></item><item><title>Απ: SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73800.aspx</link><pubDate>Fri, 09 Aug 2013 15:42:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73800</guid><dc:creator>Harkon</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73800.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=73800</wfw:commentRss><description>&lt;p&gt;αααα μάλιστα...&lt;/p&gt;&lt;p&gt;ΟΚ τότε.. ας το κλείσουμε εδώ το θέμα, καλύφθηκα!&lt;/p&gt;&lt;p&gt;σε ευχαριστώ πάρα πολύ!&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73789.aspx</link><pubDate>Thu, 08 Aug 2013 04:58:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73789</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73789.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=73789</wfw:commentRss><description>&lt;p&gt;Μόλις είπες την μαγική λέξη: "Crystal Reports". &lt;/p&gt;&lt;p&gt;Δυστηχώς ή ευτυχώς για να μπορέσουν να δουλέψουν με οποιαδήποτε βάση τα Crystal Reports, έχουν δική τους λογική για να κάνουν optimize τα δεδομένα που χρησιμοποιούν. Και σχεδόν πάντα η λογική εκτελείται στον client και όχι στη βάση.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;George&amp;nbsp;J.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73788.aspx</link><pubDate>Thu, 08 Aug 2013 04:35:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73788</guid><dc:creator>Harkon</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73788.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=73788</wfw:commentRss><description>&lt;p&gt;Καλησπέρα κι ευχαριστώ πολύ !&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Τα ερωτήματα αυτά τα στέλνω τελικά σε crystal reports και ο χρήστης και στα 2 σενάρια δεν θα δει τίποτε που είναι διεγραμμένο.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Απλά αναρωτιόμουν αν υπάρχει κάτι που είναι «σχεδιαστικά» πιο ορθό και λιγότερο επίπονο για τον sql server&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73785.aspx</link><pubDate>Thu, 08 Aug 2013 03:53:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73785</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73785.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=73785</wfw:commentRss><description>&lt;p&gt;Καλησπέρα,&lt;/p&gt;&lt;p&gt;Το πρόβλημά σου δεν θα έπρεπε να είναι στον SQL server - όχι ότι είναι αδιάφορο με το πως θα λειτουργήσει η βάση καλύτερα.&lt;/p&gt;&lt;p&gt;Λογικά το business rule - η λογική της ενέργειας που κάνει εκείνη τη στιγμή ο χρήστης στην εφαρμογή σου&amp;nbsp;-&amp;nbsp;είναι αυτή που θα σου καθορίσει τι χρειάζεται να φτιάξεις, όχι τι χρειάζεται ο SQL για να λειτουργήσει καλύτερα, π.χ. Θα ψάξεις από το πρόγραμμά σου να βρεις από τις γραμμές του παραστατικού το παραστατικό; Αν ναι, τι σημαίνει - για αυτό που κάνει εκείνη τη στιγμή ο χρήστης της εφαρμογής σου - ότι η γραμμή που βρήκε έχει σβησμένο παραστατικό; Θα πρέπει να την δει ο χρήστης; Θα πρέπει να την δείξει το πρόγραμμα; Θα πρέπει να την κρύψει το πρόγραμμα;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>SQL Optimization advice: isDeleted σε Header και Details table</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73783.aspx</link><pubDate>Thu, 08 Aug 2013 03:31:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73783</guid><dc:creator>Harkon</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73783.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=73783</wfw:commentRss><description>&lt;p&gt;Καλησπέρα σας,&lt;/p&gt;&lt;p&gt;έχω 2 κλασικούς πίνακες (έστω παραστατικών). &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-size:10pt;"&gt;Στον 1ο αποθηκεύω την «κεφαλή» του παραστατικού και στον 2ο τις λεπτομέρειές του (αντικείμενα) με foreign key το id του πρώτου πίνακα.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Έστω τώρα ότι διαγράφω το παραστατικό οπότε πάω στον πρώτο πίνακα και θέτω το πεδίο isDeleted = 1.&lt;span style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Στον δεύτερο πίνακα δεν έχω παρόμοιο πεδίο ώστε να πω και στις γραμμές του isDeleted = 1 και αυτό γιατί πάντα στα queries μου θα κοιτάω αν η κεφαλή είναι IsDeleted για να προχωρήσω ανάλογα.&lt;/p&gt;&lt;p&gt;Βρήκα όμως μια περίπτωση όπου κάνω πρώτα left join στον δεύτερο πίνακα (κρατάω και στοιχεία για κάτι άλλο πέρα από τις γραμμές του παραστατικού) και μετά Join με τον 1ο ώστε να ελέγξω εάν είναι διεγραμμένο. &lt;/p&gt;&lt;p&gt;Π.χ.&lt;/p&gt;&lt;p&gt;&amp;nbsp;σε κάποια ερωτήματα πάω πρώτα από τον πίνακα 1 (Timologia)&lt;/p&gt;&lt;p&gt;SELECT bl.Barcode&lt;/p&gt;&lt;p&gt;FROM Timologia as t&lt;/p&gt;&lt;p&gt;&amp;nbsp;INNER JOIN Timologio_Deltia as td&lt;/p&gt;&lt;p&gt;&amp;nbsp;ON t.id = td.timologioId&lt;/p&gt;&lt;p&gt;&amp;nbsp;INNER JOIN DeltiaAgoras as dag&lt;/p&gt;&lt;p&gt;&amp;nbsp;ON td.deltioAgorasID = dag.id and dag.isdeleted=0&lt;/p&gt;&lt;p&gt;INNER JOIN BCLog as bl ON dag.id = bl.deltio_agoras_id&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Where t.isDeleted = 0&amp;nbsp;&lt;/p&gt;&lt;p&gt;..... , οπότε εδώ είμαι οκ.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Σε περίπτωση που πάω από την ανάποδη όμως,&lt;/p&gt;&lt;p&gt;SELECT bl.Barcode&amp;nbsp;&lt;/p&gt;&lt;p&gt;FROM DeltiaAgoras as dag&lt;/p&gt;&lt;p&gt;LEFT JOIN Timologio_Deltia as td&amp;nbsp;&lt;/p&gt;&lt;p&gt;ON dag.id = td.deltioAgorasID &lt;u&gt;and (select t2.isdeleted from timologia as t2 where t2.id =td.timologioId)=0&amp;nbsp;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;LEFT JOIN Timologia as t&amp;nbsp;&lt;/p&gt;&lt;p&gt;ON td.timologioId = t.id and t.isdeleted = 0&lt;/p&gt;&lt;p&gt;LEFT JOIN BCLog as bl ON bl.deltio_agoras_id = dag.id&lt;/p&gt;&lt;p&gt;&amp;nbsp;...&lt;/p&gt;&lt;p&gt;&amp;nbsp;εάν δεν βάλω την υπογραμμισμένη συνθήκη παίρνω πολλαπλές εγγραφές γιατί πάει πρώτα στον 2ο πίνακα οπότε και join-άρει και με εγγραφές που ανήκουν σε διαγραμμένα παραστατικά.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Και ρωτάω, για να μη μακρολογώ. Μήπως είναι καλύτερα και πιο σωστά γενικά, να βάλω απλά ενα πεδίο Isdeleted και στον 2ο πίνακα ή το αφήνω έτσι καλύτερα;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;"&gt;Ευχαριστώ πολύ&lt;span class="Apple-tab-span" style="white-space:pre;"&gt;	&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description></item></channel></rss>