Zitat von Arne Drews
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Datenbank Design für eine Buchungsseite ( Ferienwohnung vermieten)
Einklappen
Neue Werbung 2019
Einklappen
X
-
Mit "richtig" oder "falsch" hat das aber überhaupt nichts zu tun - ich würde eher sagen: mit Bevormundung oder Unterlassung der selbigen.
Die Bevormundung liegt hier bei MySQL, weil ich einfach _irgendwas_ bekomme, was die DB gerade als "richtig" erachtet. Und so lange es kein richtig oder falsch gibt ist die Software entweder eine Fehlplanung, oder die Tests sind scheisse. Für mein Verständnis ist Software standardmäßig deterministisch.
Deshalb => Postgres.[I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]
- 2 Likes
Kommentar
-
Zitat von marie123 Beitrag anzeigenEs bleibt dabei: MySQL ist zum Lernen besser geeignet als z.B. Postgre.
Wenn man aber nichts andres kennt, fällt es schwer über den Tellerrand zu blicken.
- 1 Likes
Kommentar
-
Zitat von marie123 Beitrag anzeigen
Mit "richtig" oder "falsch" hat das aber überhaupt nichts zu tun - ich würde eher sagen: mit Bevormundung oder Unterlassung der selbigen.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Kommentar
-
Zitat von protestix Beitrag anzeigenDas ist deine Meinung dazu. Generell ist die Aussage falsch, da sich Mysql weniger an die offiziellen Standards hält als Postgres, oder DB2.
Wenn man aber nichts andres kennt, fällt es schwer über den Tellerrand zu blicken.
Im Übrigen bin ich mir gar nicht sicher, ob nicht Postgre auch gegen diesen "offiziellen Standard" verstößt. Kann bitte mal jemand in der DB, die er sich anhand des Dumps aus dem Thread https://www.php.de/forum/webentwickl...reach-schleife ,dort #15 erstellt hat, folgende Abfrage eingeben:Code:SELECT gebote.kunde, MAX(preiseingabe) AS max, angebote.Auktionsnummer, angebote.titel FROM gebote LEFT JOIN angebote ON gebote.angebot_id = angebote.Auktionsnummer WHERE timediff(now(), angebote.dauer) > 0 AND angebote.user = "King Ich" GROUP BY angebote.Auktionsnummer, angebote.titel
Kommentar
-
Zitat von marie123 Beitrag anzeigenUnd wo ist dieser "offizielle Standard" dokumentiert?
Zitat von marie123 Beitrag anzeigenIm Übrigen bin ich mir gar nicht sicher, ob nicht Postgre auch gegen diesen "offiziellen Standard" verstößt.
- 1 Likes
Kommentar
-
Zitat von marie123 Beitrag anzeigen
Und wo ist dieser "offizielle Standard" dokumentiert?
Dafür gibt es ISO-Standards. https://de.wikipedia.org/wiki/SQL oder auch https://modern-sql.com/de/standard (Danke, Markus!)
Und hier noch in Vergleich: https://www.2ndquadrant.com/en/postg...esql-vs-mysql/PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Kommentar
-
Zitat von akretschmer Beitrag anzeigen
Dafür gibt es ISO-Standards. https://de.wikipedia.org/wiki/SQL oder auch https://modern-sql.com/de/standard (Danke, Markus!)
Und hier noch in Vergleich: https://www.2ndquadrant.com/en/postg...esql-vs-mysql/
Ob es Euch gefällt oder nicht: Nein, Software ist nicht deterministisch (das war übrigens das Erste, was mir mein früherer Chef beigebracht hat), und ja, "richtig" und "falsch" sind relative Begriffe und etwas, was nicht einem Standard entspricht, ist nicht automatisch falsch, und nein, es ist nicht die Aufgabe von Software, Entwickler vor Fehlern durch "Verunmöglichung" zu bewahren, sondern allenfalls ihn zu warnen. Es bleibt dabei: Wir haben uns um ein Verständnis der Sachverhalte zu bemühen. Ein solches Bemühen kann ich bspw. in den Reaktionen auf meiner Erläuterungen in #15 und im anderen Thread nicht erkennen. Eine Beurteilung, ob das an Unvermögen liegt, steht mir nicht zu.
Kommentar
-
Geht das nun schon wieder los? Die letzten Monate habe ich nichts gesagt, weil es einigermassen gesittet ablief.
Aber nun geht das wieder von vorne los, wenn auch mit anderem Namen.
Bitte BTT oder Diskussion beenden.
DankeCompetence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Zitat von Arne Drews Beitrag anzeigenAber das ist doch in aktuellen Versionen nicht mehr so... hatten wir das nicht schonmal?
Es gibt seit Jahren einen Schalter, mit dem man das Verhalt so einstellen kann, dass ein Fehler by unzureichender Group By Angabe produziert wird, so wie bei allen anderen Systemen. Das wurde mindestens von mir schon mehrfach gennant.
weitere Fehler: Gibt es in jedem RDBMS.
Kommentar
-
Kann man Post #16 durchstreichen oder entfernen?
Deterministische Software:
Ich hoffe, die Datenbank, mit der mein Konto verwaltet wird, verhält sich deterministisch. Aber vielleicht entsteht ja mal ein Fehler zu meinen Gunsten!
Wenn sich Software nicht deterministisch verhält, gibt es 3 Möglichkeiten:
- es ist KI Software, Fuzzy Algorithmen o.ä.
- es ist fehlerhafte Software
- es ist komplexe Software und der Betrachter begreift mit seiner eigenen, unzureichende Auffassungsgabe nicht die Varianz der Ergebnisse
Kommentar
-
Zitat von Perry Staltic Beitrag anzeigenEs gibt seit Jahren einen Schalter, mit dem man das Verhalt so einstellen kann, dass ein Fehler by unzureichender Group By Angabe produziert wird, so wie bei allen anderen Systemen. Das wurde mindestens von mir schon mehrfach gennant.
Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Zitat von Arne Drews Beitrag anzeigenRichtig, das wars. Aber ist das nicht mittlerweile per default "richtig" konfiguriert?Code:SELECT gebote.kunde, MAX(preiseingabe) AS max, angebote.Auktionsnummer, angebote.titel FROM gebote LEFT JOIN angebote ON gebote.angebot_id = angebote.Auktionsnummer WHERE timediff(now(), angebote.dauer) > 0 AND angebote.user = "King Ich" GROUP BY angebote.Auktionsnummer, angebote.titel
Code:-- phpMyAdmin SQL Dump -- version 4.8.5 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Erstellungszeit: 13. Nov 2019 um 22:01 -- Server-Version: 10.1.38-MariaDB -- PHP-Version: 7.3.2 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Datenbank: `auktion_db` -- -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `angebote` -- CREATE TABLE `angebote` ( `Auktionsnummer` int(11) NOT NULL, `titel` text COLLATE utf8_bin NOT NULL, `user` text COLLATE utf8_bin NOT NULL, `beschreibung` text COLLATE utf8_bin NOT NULL, `kategorie` text COLLATE utf8_bin NOT NULL, `plz` text COLLATE utf8_bin NOT NULL, `ort` text COLLATE utf8_bin NOT NULL, `zustand` text COLLATE utf8_bin NOT NULL, `art` text COLLATE utf8_bin NOT NULL, `startpreis` decimal(18,2) NOT NULL, `dauer` datetime NOT NULL, `top` text COLLATE utf8_bin, `datum` datetime NOT NULL, `bezahlt` text COLLATE utf8_bin NOT NULL, `aktiv` text COLLATE utf8_bin NOT NULL, `edit` text COLLATE utf8_bin NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- -- Daten für Tabelle `angebote` -- INSERT INTO `angebote` (`Auktionsnummer`, `titel`, `user`, `beschreibung`, `kategorie`, `plz`, `ort`, `zustand`, `art`, `startpreis`, `dauer`, `top`, `datum`, `bezahlt`, `aktiv`, `edit`) VALUES (30, 'HP Drucker an Bastler', 'King Ich', 'Biete hier meinen gebrauchten Drucker von HP an, der zwar Druckgeräusche von sich gibt, aber ein leeres Blatt \'ausspuckt..\r\nWahrscheinlich ist der Druckkopf getrocknet. (?)', 'Computer', '22159', 'Wandsbek - Hamburg Farmsen-Berne', 'Gebraucht', 'Privat', '0.00', '2019-10-28 16:00:00', 'false', '2019-10-24 21:45:29', 'false', 'true', 'editiert'), (31, 'Nokia 1 mit OVP / gebraucht', 'King Ich', 'Gebrauchtes Smartphone von Nokia.\r\n\r\nIch biete es hier für 30,- an.\r\n\r\nBei fragen einfach anschreiben..', 'Telefon', '22159', 'Hamburg', 'Gebraucht', 'Privat', '30.00', '2019-11-11 18:50:10', 'false', '2019-11-01 19:02:34', 'false', 'true', 'false'), (32, 'Klappgarderobe & Klebebefestigungsset', 'King Ich', 'Verkaufe ein neues Klappgarderoben Set, aus hochwertigem Edelstahl.', 'Wohnen', '22159', 'Hamburg', 'NEU', 'Privat', '0.00', '2019-11-11 21:27:39', 'top', '2019-11-01 21:33:30', 'false', 'true', 'false'), (33, 'Vander Life Tastatur', 'King Ich', 'Verkaufe eine Tastatur mit US Tastenbelegung.\r\nBezeichnung: KB-3181 Wired \r\nkeyboard.', 'Computer', '22159', 'Hamburg', 'NEU', 'Privat', '0.00', '2019-11-11 21:54:21', 'top', '2019-11-01 21:58:13', 'false', 'true', 'false'), (35, 'Office PC I5-6400 4x 2.7GHz Windows 7 professional', 'King Ich', 'Biete hier ein Office PC mit\r\n-CPU : I5-6400\r\n-Asus H110 - Plus Mainboard \r\n-8 GB DDR Arbeitsspeicher \r\n-250 GB Festplatte \r\n-500 Watt Netzteil ', 'Computer', '22159', 'Hamburg', 'Gebraucht', 'Privat', '180.00', '2019-11-07 20:59:58', 'top', '2019-11-08 21:06:21', 'false', 'true', 'false'); -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `gebote` -- CREATE TABLE `gebote` ( `id` int(11) NOT NULL, `kunde` text COLLATE utf8_bin NOT NULL, `angebot_id` text COLLATE utf8_bin NOT NULL, `preiseingabe` decimal(10,2) DEFAULT NULL, `timestamp` varchar(30) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- -- Daten für Tabelle `gebote` -- INSERT INTO `gebote` (`id`, `kunde`, `angebot_id`, `preiseingabe`, `timestamp`) VALUES (25, 'Maxi', '30', '1.00', '1571946761'), (26, 'King Ich', '30', '1.00', '1571946924'), (27, '123', '30', '1.00', '1572275442'), (28, 'Maxi', '35', '181.00', '1573243707'), (29, 'King Ich', '35', '182.00', '1573244905'); -- -- Indizes der exportierten Tabellen -- -- -- Indizes für die Tabelle `angebote` -- ALTER TABLE `angebote` ADD PRIMARY KEY (`Auktionsnummer`); -- -- Indizes für die Tabelle `gebote` -- ALTER TABLE `gebote` ADD PRIMARY KEY (`id`); COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Kommentar
-
Zuletzt geändert von Meister1900; 13.11.2019, 22:27.SQL-92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are not named in the GROUP BY clause. For example, this query is illegal in standard SQL-92 because the nonaggregated name column in the select list does not appear in the GROUP BY:
Code:SELECT o.custid, c.name, MAX(o.payment) FROM orders AS o, customers AS c WHERE o.custid = c.custid GROUP BY o.custid;
https://dev.mysql.com/doc/refman/5.7..._full_group_by
Hoffe das beantwortet deine Fragen marie123sorry, shift-taste kaputt
Kommentar
Kommentar