Da eintragen, wo nichts drinnen steht |
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
Hi,
Also, ich wollte das durch eine bestimmte Aktion etwas in einer der Spalten eingetragen wird, aber nur dort, wo noch nichts drinnen ist, weil ich nichts überschreiben will.
Ich habe es anfangs so versucht:
update tabelle set spalte = 'neuer wert' where spalte is null;
so kann das doch net funktionieren, oder?
ich habe die spalten:
name: Test
id: 1
spalt1: blablabla
spalt2: blablabla
spalt3:
.
.
.
.
spalt50: blablabla
so nun will ich ja, das er nur in die Spalte einträgt wo nix drinnen ist, also kann ich ja net schreiben UPDATE test SET spalt1 = balbalbalb where spalte is null;
weil das sich ja dann nur auf die Spalte spalt1 bezieht, obwohl in diesem Falle es in spalt3: eingetragen werden soll. Aber danke. Oder ist das gar net möglich?
Ich hoffe ihr versteht meine Fragen oder / und koennt sie beantworten
Danke
Vash
|
 Profil
E-Mail
Editieren
Zitieren
|
Ehemaliges Mitglied (#644)
Forenheld
Beiträge: 832 |
ja ich verstehe was du meinst. was hälst du von:
for (blabla) {
$var = $line[$i];
if ($var == "") {
$update
}
}
|
 Profil
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
mhh ich verstehe nicht was du damit erreichen willst, kannst du es etwas detialiertet erklären?
Danke aber.
|
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Wie genau sieht deine Tabelle aus?
id | spalte1 | spalte2 | spalte3 ???
dann müsstest du am eifnachsten drei UPDATE-Anweisungen, jeweils für jede Spalte machen. das ist am schnellsten.
|
 Profil
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
Naja das Problem ist, ich habe 50 spalten :(
name || id || Spalte1 || Spalte2 || Spalte3 || .... || Saplte 50 |<
Diese Nachricht wurde geändert von: Vash |
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
wofür is das? Bei sowas würd ich immer empfehlen, zu gucken, ob man nicht die Tabellenstruktur ändern kann...
|
 Profil
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
Ich bin mir eigentlich ziemlich sicher, das ich die Struktur net ändern kann, weil s einfach 50 verschiedene dinge seien sollen. Gibt es denn dafür keine möglichkeit, ausser alle spalten einzeln zu testen?
|
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
nein, dafür gibts kaum ne andere Möglichkeit. Ausschließen will ichs nicht, aber ich kenn sie nicht.
|
 Profil
Editieren
Zitieren
|
inko
Fachidiot
Beiträge: 133 |
Natürlich kannst Du die Struktur ändern und zwar folgendermassen:
1:
2:
3:
4:
5:
6: | CREATE TABLE blabla (
id int(11) unsigned NOT NULL default '0',
column tinyint(2) unsigned NOT NULL default '0',
value varchar(32) NOT NULL default '',
PRIMARY KEY (id,column)
) TYPE=MyISAM; |
Du kannst einfach INSERTS ausführen, wenn ein id / column - Paar existiert schlägt das wegen des keys über 2 Spalten fehl.
|
 Profil
Editieren
Zitieren
|
intruder
Pixelschubser
Beiträge: 13 |
ich würde die db tabellen struktur so ändern, dass du die informationen auf mehrere tabellen verteilst. du kannst die id als gemeinsamen nenner benutzen.
Es ist einfach nicht sonderlich förderlich für die dauer der abfragen, wenn das teil so viele spalten hat. mach es dir doch leichter ... verteile das ganze ein bisschen.
das macht die administration leichter.
|
 Profil
E-Mail
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
ich habe mich jetzt dazu entschlossen abfragen einzeln zu machen, aber wie könnte ich das realisieren, erst zu checken wo in den 50 spalten noch nichts drinnen ist, das müsste man ja dann mit einem if befehl machen, der sagt:
if
(spalte1= Null)
then (blablabla)
elseif
usw.
aber wie müsste ich das dann schreiben, das der if befehl kapiert das nichts drinnen ist, auch mit dem Befehl NOT NULL? oder anders. Bin für Jede Hilfe Dankbar ^^
|
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Nö du lässt einfach auf alle Spalten die Folgende Abfrage laufen:
UPDATE tabelle SET spalte = 'foo' WHERE spalte = NULL
|
 Profil
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
achso, dann trägt er erst dort ein wo nichts drinnen ist oder?
|
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Dann trägt er dort ein, wo NULL gesetzt ist. Ansonsten, wenn gar nichts drinsteht halt statt WHERE spalte = NULL -> WHERE spalte = ''
|
 Profil
Editieren
Zitieren
|
Vash
Pixelschubser Threadstarter
Beiträge: 17 |
Dan ke
|
 Profil
E-Mail
Editieren
Zitieren
|