Bin noch nicht ganz wach, aber vielleicht so?
SELECT
Para,
MIN(Result) AS [min],
MAX(Result) AS [max],
AVG(Result) AS [avg]
FROM
Tabelle
WHERE
[Test set] IN (
SELECT [Test set] FROM Tabelle GROUP BY [Test set] HAVING COUNT(*) = 2
)
GROUP BY
Para
du übergibts an row überhaupt keine wert. außerdem darfst du die variable len nicht irgendwo mittendrin deklarieren, sondern musst das gleich am anfang erledigen. ich glaub, ich hab mal gelesen, dass das ein muss bei c ist. bin mir aber nicht ganz sicher
ich hab selbst mal en bisschen dran rumgebastelt:
#include <stdio.h>
#include <my_global.h>
#include <mysql.h>
#include <string.h>
char binputvar1[50];
char mysqlcommand(char queryvar[100])
{
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = "pwd";
char *database = "dbase";
size_t len;
conn = mysql_init(NULL);
mysql_real_connect(conn, server, user, password, database, 0, NULL, 0);
mysql_query(conn, queryvar);
result = mysql_store_result(conn);
row = mysql_fetch_row(result);
len = strlen(row);
if(binputvar1)
strcpy(binputvar1, row[0]);
mysql_free_result(result);
mysql_close(conn);
}
int main()
{
mysqlcommand("SELECT name FROM testtable WHERE xyz = 2");
printf("%s\n", binputvar1);
getchar();
return 0;
}
funktioniert bei mir einwandfrei. hoffe ich konnte dir helfen
mit was programmierst du? ich benutze vs2008, da werden die fehler auch angezeigt.
also ich habe eine sql table in die ich einen "praktisch" leeren datensatz einfügen möchte, also nur die id bzw. primärschlüssel soll ausgefüllt werden
INSERT INTO PERSONEN () VALUES ()
so hätte ich es probiert, hatte aber leider keinen erfolg
please help
mfg
---------------------------------------------------------
INSERT INTO "+tableName+" ("+table.getColumnName(1)+") VALUES (NULL)
Hi,
gerade in MS-Access dauern solche Unterabfragen meist eine kleine Ewigkeit. Wäre es da nicht günstiger einen Outer Join zu nehmen und alle bei denen das Feld aus der zweiten Tabelle NULL ist mit der where-Bedingung rausfiltern?
Gruß Mümmel
Ok Hat sich erledigt ;o)
Habe vergessen ein '%' Wildcard einzufügen.
SELECT * FROM tabelle WHERE name LIKE 'A%'
% ist dabei eine Wildcard.
Fallls es aber eine bessere Lösung gibt bitte einfach posten. Danke.
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Der Titel bezeichnet nun schon die Problematik.
Es gibt wohl Tools, die sowas einigermaßen vernünftig umsetzen. Danach
werde ich nun auch weiterhin noch googeln und recherschieren.
Hat jemand schon irgendwelche positiven Erfahrungen mit irgendeinem Tool gemacht
oder kann es weiterempfehlen?
Hallo,
Leider hat das nicht geholfen.
Hatte ich vergessen zu sagen: Ist Version 6.
Ich hab jetzt inzwischen mal versucht die Anwendung selbst auszulesen um eventuell an das Passwort bzw den Benutzernamen zu kommen.
Bin auch etwas weiter.
habe einen Benutzernamen gefunden "kld" und dem Passwort dazu. Kann damit die isc4.gdb öffnen aber nicht bearbeiten und wenn ich damit auf die Datenbank selbst möchte von der anwendung dann sagt er mir "login same as sql role name" .
Was heisst diese meldung.
Verstehe das irgendwie nicht.
Bzw. Gibt es eine Möglichkeit den passwort hash aus der isc4.gdb wieder zu entschlüsseln zu dem passwort denn dann könnte ich das passwort vom sysdba sehen.
Nochmal Hallo,
Mein Fehler: Bei ON DUPLICATE KEY UPDATE, schreibt man natürlich nicht nochmal die Tabelle dahinter und WHERE ist überflüssig.
Korrekt wäre es also so:
DELIMITER //
CREATE TRIGGER trg_update
AFTER UPDATE on t1
FOR EACH ROW
BEGIN
INSERT INTO t2 (t2.Wert, t2.Artikelnummer)
VALUES (NEW.Wert, NEW.Artikelnummer)
ON DUPLICATE KEY UPDATE t2.Wert=NEW.Wert;
END; //
DELIMITER ;
VlG
Das scheint mittels READ unter Sybase möglich zu sein:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc38151.1270/html/iqref/X315705.htm
Solarisguy schrieb:
Also das BULK COPY läuft ziemlich lowlevel, und indexe etc. müsste man dann sowieso abschalten.
Was leider nicht geht sind BULK INSERTS wie in MySQL (INSERT foo values (a)(b)(c)).
BULK COPY wird teilweise schon genutzt.
Ein Sybase Experte wäre natürlich eine Idee, aber das Programm und die DB sind recht komplex, in 2-3 Tagen könnte der auch keine Aussagen treffen.
Naja...
Wenn es für Sybase diverse Profiling-Tools gibt, könnte der vielleicht schon relativ schnell zu einem Ergebnis kommen.
Schlechte Performance kann ja an vielem liegen, kann theoretisch sogar ein fehlender Index sein.
Und sonst müssen es halt 5-10 Tage Sybase-Experte sein
Wenn die Anwendung wichtig genug ist, kann das sich das schon bezahlt machen.
Sehe grad kein Problem...
Mach eine Connection auf die "master" Datenbank des entsprechenden Servers, und setzt dann die beiden von Unix-Tom geposteten Abfragen ab.
Warum nicht 127.0.0.1 , wenns auf deinem Rechner ist? EDIT: Achso, der Code ist nicht aktuell.
Warum tcp:// ? Das gehört da nicht hin.
Der Name ist normalerweise root .
Mit einem LEFT JOIN in etwa so oder so ähnlich
SELECT
COUNT( pa.ID ) AS applies
-- , weitere Spalten
FROM panel_users AS pu
-- LEFT JOIN um auch user ohne applies anzuzeigen
LEFT JOIN panel_applies AS pa ON pu.ID = pa.userID
GROUP BY pa.userID
ORDER BY `applies` DESC
Danke für die Hinweise witte!
Hm, den ganz einfachen Weg gibt es also nicht. Nach der Lektüre weiß ich nun auch warum.
Werde das mal in einer Testumgebung ausprobieren um abzuschätzen, ob ich es mit meinen bescheidenen Kenntnissen hinbekomme bzw. ob ich es in akzeptabler Zeit hinbekomme.
Nochmals Danke.
witte schrieb:
Solarisguy schrieb:
Was spielt das für die Packetsize für eine Rolle.
Mehr als du glaubst. Ich z.B. weiß nicht ob du die Paketgröße im TCP/IP-Stack änderst, in der Sybase-Client-Bibliothek (wenn sie sowas unterstützt) oder im Framework, wenn es dort eine abstrahierende DB-Verbindungsschicht gibt. Schließlich gibt es mehr als nur ein Protokoll und mehr als nur eine Ebene.
Beim Tunen ist es eigentlich üblich ein Problem zu definieren ("Beim mehr als 50 simultanen Verbindungen werden die Reaktionen des Servers zu langsam"), dann ein Ziel zu formulieren ("Bei 50 simultanen Verbindungen soll die Antwortzeit maximal 5 Sekunden bei einfachen Anfragen dauern") und abschließend zu versuchen dieses Ziel zu erreichen. Jetzt einfach so "rumzupoken" wird wohl eher wenig bringen, zumal du ja noch nicht einmal gleiche Testbedingungen hast oder es trivial ist.
Solarisguy schrieb:
habe jetzt mit 4096 den besten und schlechtesten Test
Also laut Sybase Doku (nicht wirklich ausführlich, daher kann ich dir das auch nicht so genau sagen), sind das TDS Packete, welche dann in TCP Ethernetframes gepackt werden, wenn ich es richtig verstanden habe.
Mein Ziel ist halt, das der Import schneller läuft, sprich weniger Zeit benötigt.
Leider haben wir hier keine genau definierte Testumgebung, so das ich leider etwas rumstochern muss, viel try n error.
Mich interessiert hier aber nicht nur der konkrete Fall, sondern ob es Erfahrungen mit solchen Einstellungen bei Datenbankanwendungen gibt.
performanceman schrieb:
hustbaer schrieb:
Meinst du inkrementelle Suche wie in "acb" tippen -> Ergebnis für "abc", "d" tippen -> Ergebnis für "abcd" usw.?
Genau das meine ich. Wie heißt der Fachausdruck dafür?
Ich glaube der Fachausdruck heisst eh inkrementelle Suche.
Wollte nur nachfragen, weil es für mich so sonnenklar ist, dass das in SQL nicht geht, dass ich mir grad nicht sicher war, ob du auch wirklich das meinst.
@witte: Einige deiner Punkte in Ehren (andere nicht), aber dass du mit C#/ADO.NET nur annähernd so schnell eine Oberfläche für eine kleine SQL-Server-Datenbank hinbekommst kann ich mir beim besten Willen nicht vorstellen. Oder gibt es auf C#-SEite im VS inzwischen schon Assistenten die mir für ein SQL-Query auf Wunsch autom. eine schöne DataTable erzeugen + alle GUI-Elemnente dafür?
MfG SideWinder